Laravel护照与自定义登录控制器

时间:2017-07-06 02:46:30

标签: laravel laravel-5 oauth laravel-5.4 laravel-passport

正如laravel-passport中提到的那样,登录控制器来自php artisan make:auth,而我们的路由器web.phpAuth::routes();

我们的client-site

中的简单代码
Route::get('/redirect', function () {

    $query = http_build_query([
        'client_id' => 'client-id',
        'redirect_uri' => 'http://client-site/callback-responses-url',
        'response_type' => 'code',
        'scope' => ''
    ]);

    return redirect('http://server-site/oauth/authorize?'.$query);
});

如果用户未登录,http://server-site/oauth/authorize?'.$query会重定向到http://server-site/login

在任何情况下,我都想将登录控制器重定向到我的自定义登录控制器。然后我完成检查后使用if是否为authorization request agreement

的显示视图

我只是试图检查oauth/authorize,但我找不到链接的任何函数或控制器句柄。如果再有机会的话。我想知道更多关于laravel-passport oauth是如何工作的,我也可以在用户登录后制作custom authorization view

任何帮助都会非常有用,谢谢(

2 个答案:

答案 0 :(得分:1)

在我用laravel护照进行大搜索之后,我得到了如何定制laravel护照的解决方案。

在您的app\Exception\Handler.php中有代码

protected function unauthenticated($request, AuthenticationException $exception)
{
    if ($request->expectsJson()) {
        return response()->json(['error' => 'Unauthenticated.'], 401);
    }

    //return redirect()->guest(route('login'));
    return redirect()->guest(route('accountLogin')); // change this part to your login router
}

然后在你的login controller成功登录的处理程序中添加此代码

if(session("url")["intended"] != null){
    $redirect = session("url")["intended"];
}else{
    $redirect = "/home";
}

return Redirect($redirect);

该代码用于重定向回客户端页面。当然,如果您对AuthenticatesUsers vendor\laravel\framework\src\Illuminate\Foundation\Auth中的third party有更多了解,那么您可以构建自己的优美代码。

我找到的最后一步是:RouteRegistarar这是关于如何划分路线授权的。

直到现在,我还没有自定义我的授权页面。目前我正在做一个漂亮的libfontconfig 代码,因此客户端可以很容易地使用它。

这就是我所知道的laravel护照来定制登录页面

答案 1 :(得分:-1)

您可以使用personal access token方法

在其中编写您的自定义身份验证方法,并在通过该自定义身份验证后,u会为用户生成访问令牌

即公共函数myCustomLoginMethod(Request $ req){

  // your custom authentication here
 $user = User::where("email",$req->email);

 //test for password and like so
 if (! Hash::check($req->password, $user->password)) {
      // wrong password
      return response('Unauthorize', 401);
  }

 if ( $user->is_admin ) {
    //create a token for the user
    $token = $user->createToken('Token Name')->accessToken;
 }else {
    //handle else
 }

  return token

}