2016-12-12 101 views
1

我正在使用laravel 5.3,并且已经发现旧认证控制器已移至核心(Illuminate ...)。对于未经身份验证的用户,App \ Exceptions \ Handler.php中有一个“未经身份验证”的功能,当未经身份验证的用户引发“身份验证”时,会调用该功能。Laravel 5.3创建登录/授权操作

不过,我并没有发现什么地方放置一个应该被称为每次用户成功日志中或由记得令牌已验证成功功能。在我的例子中,这个功能应该做一些事情,如日志IP等

你能帮我在哪里把这样的功能?

谢谢!

回答

1

我认为可以在命令提示符下使用这个命令来完成。

php artisan make:auth 
+0

我已经做到了这一点,认证系统(注册,登录...)工作得很好。我只是想添加一个自定义函数,每次有人登录成功时都会调用它。 – Tobi

0

除非我失去了一些东西,还有在应用程序\无例外 “未经验证” 功能\ Laravel的Handler.php 5.3

你应该看看authorization actions

Laravel 5.3自带的验证scafolding预包装。

PROJECT/app/Http/Controllers/Auth 
+0

这是从我的Handler.php功能: '保护功能未认证用户($请求的AuthenticationException $除外) { 如果($请求 - > expectsJson()){ 返回响应() - > JSON([”错误'=>'未经身份验证。',401); } \t \t \t \t echo $ request; return redirect() - > guest('login'); }' – Tobi

+0

我想这是一个自定义函数?我只是用Laravel Framework 5.3.26版创建了一个简单的项目,并且它没有这个功能。但这不是问题。 – codiiv

+0

您可能需要创建侦听https:// laracasts的事件侦听器。com/discuss/channels/general-discussion/login-event-handling-in-laravel-5 – codiiv

0

在5.3我刚修改过的成功和失败的操作使用外的开箱验证的登录。这个Gist可能对你有帮助。它实际上一步一步解释如何使用api/login登录并将令牌传递回移动平台。然后,您可以随后使用令牌回拨所有API。我修改了返回来识别Json请求头并将用户作为json发回。

以下是可能对您有帮助的信息。 Laravel API Token Help

+0

步骤7和8应该有助于解决您的问题。 –

0

这是一个自定义auth解决方案。

class AdminsController extends Controller 
{ 
    public function getLogin() 
    { 
     return view('admin.login'); 
    } 

    public function postLogin(Request $request) 
    { 
     $this->validate($request, ['email' => 'required|email', 'password' => 'required']); 

     if(!Auth::attempt(['email' => $request['email'], 'password' => $request['password']])) { 
      return redirect()->back()->with(['fail' => 'Could not log you in!']); 
     } 

     return redirect()->route('admin.dashboard'); 

    } 

    public function getLogout() 
    { 
      Auth::logout(); 
      return redirect()->route('index'); 
    } 
} 

而在routes.php文件:

Route::group(['middleware' => ['guest']], function() { 

    Route::get('/admin/login', [ 
     'uses' => '[email protected]getLogin', 
     'as' => 'admin.login' 
    ]); 

    Route::post('/admin/login', [ 
     'uses' => '[email protected]', 
     'as' => 'admin.login' 
    ]); 
}); 

Route::group(['middleware' => ['auth']], function() { 
    Route::get('/admin/logout', [ 
     'uses' => '[email protected]', 
     'as' => 'admin.logout' 
    ]); 
}); 

希望你与此代码得到解决,它是有益的。