首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有自定义登录控制器的Laravel护照

带有自定义登录控制器的Laravel护照
EN

Stack Overflow用户
提问于 2017-07-06 02:46:29
回答 2查看 7.2K关注 0票数 4

正如在拉拉-护照中提到的,登录控制器是由php artisan make:auth制作的,而在我们的路由器中,web.phpAuth::routes();

client-site中的简单代码

代码语言:javascript
复制
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是true之后,就会看到关于authorization request agreement的显示视图。

简单地说,我试图检查oauth/authorize,但没有找到任何函数或控制器处理该链接。如果再给我机会。我想知道,关于laravel-passport的更多信息,oauth是如何工作的,在用户登录之后,我也可以制作custom authorization view

任何帮助都会很有帮助的谢谢(:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-18 02:31:33

在对laravel护照做了大量搜索之后,我找到了如何定制laravel护照的解决方案。

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

代码语言:javascript
复制
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 (处理程序)中,成功登录添加以下代码

代码语言:javascript
复制
if(session("url")["intended"] != null){
    $redirect = session("url")["intended"];
}else{
    $redirect = "/home";
}

return Redirect($redirect);

该代码用于重定向回客户端页面。当然,如果您对AuthenticatesUsers in vendor\laravel\framework\src\Illuminate\Foundation\Auth的工作原理有更多的了解,那么您可以构建自己漂亮的代码。

我发现的最后一步是:RouteRegistarar,这是为了如何跨越路由授权。

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

这就是我所知道的关于laravel护照来自定义登录页面的全部信息。

票数 1
EN

Stack Overflow用户

发布于 2018-07-03 12:46:23

您可以使用personal access token方法

在这里,您将编写自定义身份验证方法,当传递自定义验证时,您将为用户生成一个访问令牌。

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

代码语言:javascript
复制
  // 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

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44938974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档