【问题标题】:Laravel 5.8 passport logout method ( Unauthenticated )Laravel 5.8 护照注销方法(未验证)
【发布时间】:2019-07-27 17:50:28
【问题描述】:

当我调用路由/api/logout 时,我得到Unauthenticated,我已经从我的/api/login 方法中获得了令牌,当我尝试使用相同的middleware 运行演示请求时,它运行完美

  • 我尝试了类似演示的请求:
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

路由(在 api.php 中带有 api 前缀)

Route::middleware('auth:api')->post('/logout', 'PassportAuthController@logout')->name('api.auth.logout');

简单的注销功能

public function logout( )
    {
        auth()->user()->tokens->each(function ($token, $key) {
            $token->delete();
        });

        return response()->json('Logged out', 200);
    }

【问题讨论】:

    标签: laravel laravel-passport bearer-token


    【解决方案1】:

    auth() 是一个辅助函数,你不能传递你使用的 auth 的参数

    特别是如果您使用多个身份验证系统,那么您应该确定哪个身份验证?

    所以要确保你从 api auth 注销而不是默认的 auth write

    public function logout( )
        {
            auth('api')->user()->tokens->each(function ($token, $key) {
                $token->delete();
            });
    
            return response()->json('Logged out', 200);
        }
    
    
    

    【讨论】:

      【解决方案2】:

      当您在路由中间件中使用 Auth API 时,您确定您的 Auth 是正确的。

      而不是auth()->user()->tokens

      使用auth('api')->user()->tokens

      【讨论】:

        猜你喜欢
        • 2020-09-03
        • 2018-06-07
        • 2017-01-06
        • 2019-02-28
        • 2020-11-12
        • 2019-12-10
        • 2017-04-24
        • 2020-01-14
        • 2019-06-14
        相关资源
        最近更新 更多