正如laravel-passport中提到的那样,登录控制器来自php artisan make:auth
,而我们的路由器web.php
将Auth::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
任何帮助都会非常有用,谢谢(
答案 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
}