【问题标题】:Why Auth::check() returns true after logout ? Passport为什么 Auth::check() 在注销后返回 true ?护照
【发布时间】:2019-12-05 18:58:27
【问题描述】:

所以我使用护照进行身份验证,在我注销用户之前一切正常。我的路径通过auth:api 保护受到保护,因此在注销后我无法访问任何功能,但是我的前端是通过基于 Auth:check() 值的反应呈现的,并且在注销后它保持真实。因此,我可以在没有任何权限的情况下进入管理仪表板,这是一个错误,我找不到修复它的解决方案。

这是我的注销功能:

public function logout()
{
    if (Auth::check()) {
        DB::table('oauth_access_tokens')
            ->where('user_id', Auth::user()->id)
            ->update([
                'revoked' => true
            ]);

        return response(['check' => Auth::check()]); // I get true after logging out
    }

    return response(['check' => Auth::check()]);
}

这是我的登录和注册功能:

public function register(Request $request){
    $validatedData = $request->validate([
        'name' => 'required|max:55|unique:users',
        'password' => 'required'
    ]);
    $validatedData['password'] = bcrypt($request->password);
    $user = User::create($validatedData);
    $accessToken = $user->createToken('authToken')->accessToken;

    return response()

    }

public function login(Request $request)
{
    $loginData = $request->validate([
        'name' => 'required',
        'password' => 'required'
    ]);

    $a = auth()->attempt($loginData, true);
    if(!$a) {
        return response(['message'=>'Invalid credentials');
    }
    $accessToken = auth()->user()->createToken('authToken')->accessToken;
    return response()->json($accessToken);
}

我错过了什么?

【问题讨论】:

    标签: laravel laravel-passport


    【解决方案1】:

    Auth::check() 返回 true 的原因是用户设置了身份验证服务。您只是撤销访问令牌,这意味着用户将从下一个请求中注销。

    您可以通过以下两种方式之一解决此问题

    1) 假设对logout 路由的任何调用都将导致用户被注销,而不管执行的逻辑如何。例如,您可以拨打电话,然后在前端清除访问令牌(或执行任何其他注销逻辑)。

    2) 您可以在代码中调用Auth::logout(),这会将身份验证服务上的当前用户设置为null,从而导致Auth::check() 返回false

    【讨论】:

    • 第二个选项对我不起作用,我发现错误 ERROR: Method Illuminate\Auth\RequestGuard::logout does not exist. 我想我必须验证令牌或其他东西,而不是 Auth::check();
    • 你可以选择第一个选项,它会正常工作。
    猜你喜欢
    • 2018-01-19
    • 2015-03-03
    • 1970-01-01
    • 2016-06-08
    • 2014-02-06
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多