Laravel护照:从移动的清除会话

xzlaal3s  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(163)

我正在使用PKCE授权码授予。我尝试通过API撤销令牌,没有问题(路由在auth:api中间件下)。但是,服务器端会话没有结束,当我再次尝试登录时,它跳过登录表单并跳转到授权提示或只是回调页面。我尝试在Web中间件中创建一个路由,该路由会终止会话,但始终存储cookie“laravel_session”和“XSRF-TOKEN”,并且无法删除它们。
我想让用户点击注销按钮,从移动的应用程序和用户应通过整个oauth2流程时,再次登录,而不是跳过登录表单在服务器端。

public function logoutAPI(){
        //clear server side session 
        Auth::guard('web')->logout();
        Session::flush();
        // logout and revoke mobile app token
        Auth::user()->token()->revoke();
        $tokenId = Auth::user()->token()->id;

        $tokenRepository = app('Laravel\Passport\TokenRepository');
        $refreshTokenRepository = app('Laravel\Passport\RefreshTokenRepository');
        $tokenRepository->revokeAccessToken($tokenId);
        $refreshTokenRepository->revokeRefreshTokensByAccessTokenId($tokenId);

        return response()->json([
            'msg' => 'You have been succesfully logged out'
        ],200);

请注意,我不会使用其他授权类型作为此处的参考https://oauth2.thephpleague.com/authorization-server/which-grant/

6ss1mwsb

6ss1mwsb1#

在Laravel Passport〉= 11.3上重定向授权时,您可以使用prompt=login。这会导致应用始终提示用户重新登录应用,即使他们已经有一个现有会话。
查看文档了解更多信息:https://laravel.com/docs/9.x/passport#requesting-tokens-redirecting-for-authorization

相关问题