Laravel护照如何注销用户?

问题描述 投票:0回答:1

我有一个主要和客户项目。客户端项目通过laravel护照使用主项目的授权。登录工作正常,但是当我尝试使用$request->user()->token()->revoke();注销时,客户端项目将用户重定向回主项目以进行授权,但由于某种原因,而不是询问对于登录,主项目仅发出一个新令牌并将用户重定向回客户端项目。我认为问题在于我的登录路由和返回SPA应用程序的路由都放置在Web上,而所有其他路由都放置在api中,但是我无法理解如何解决此问题。另外,我在网络中使用\ Laravel \ Passport \ Http \ Middleware \ CreateFreshApiToken :: class(因为我不太了解允许我在每个请求中都不发送承载令牌)。如何使注销正常工作?

我的登录名和应用程序的路由(放置在网络中)

Route::get('/authorization{any}', 'SpaController@auth')->where('any', '^.*$');
Route::get('/{any}', 'SpaController@main')->where('any', '^(?!api)(?!logout)(?!storage).*$')->middleware('auth');
Route::get('logout', 'AuthController@logout')->middleware('auth');
Route::post('login', 'AuthController@login');

授权控制器

public function login(Login $request)
{
    if (config('recaptcha.enabled') && !$this->checkRecaptcha($request['recaptchaToken'], $request->ip())) {
         return 'Captcha error';
    }
    $credentials = request(['email', 'password']);
    if(!Auth::attempt($credentials))
        return response()->json([
            'message' => 'Unauthorized'
        ], 401);
    $user = $request->user();
    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;
    if ($request->remember_me)
        $token->expires_at = Carbon::now()->addWeeks(1);
    $token->save();
    return (['redirect' => redirect()->intended('/')->getTargetUrl()]);
}

登出路线(放置在api中)

Route::middleware(['auth:api','request.log'])->get('/logout', function (Request $request) {
    $request->user()->token()->revoke();
});
php laravel laravel-passport
1个回答
0
投票
嗯!我不确定您在做什么,但希望能对您有所帮助
© www.soinside.com 2019 - 2024. All rights reserved.