【问题标题】:Using Auth check with sanctum in laravel 8, does it work在 laravel 8 中对 sanctum 使用身份验证检查,它是否有效
【发布时间】:2021-09-19 08:50:09
【问题描述】:

我的 laravel SPA 仪表板中有几条似乎不起作用的规则,它们总是返回 false 并且不确定这是正确的还是我的逻辑有问题。

我使用 Sanctum 在 Laravel 8 中提供验证令牌,但我还在我的刀片父视图文件中添加了在开始构建身份验证检查时。

我的问题是 laravel auth() 是否与 sanctum 一起使用,您如何使用 PHP 看到 sanctum 有效/工作

vue.blade.php

// this will not work when I login
@if (Auth::check())
    <script>
        window.Laravel = {!!json_encode(['isLoggedin' => true, 'user' => Auth::user()])!!}
    </script>
@else
    <script>
        window.Laravel = {!!json_encode(['isLoggedin' => false])!!}
    </script>
@endif

loginController.php

$credentials = [
    'email' => $request->email,
    'password' => $request->password,
];

if (auth()->attempt($credentials)) {
    if (Hash::check($request->password, $user->password)) {
         $request->user()->createToken('token_name')->plainTextToken;
              return with logic
         }
    }
}

config/auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
        'hash' => false,
    ],

    'admin' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
    
    'auth' => [
        'driver' => 'token',
        'provider' => 'users',
        'hash' => false,
    ],
],

【问题讨论】:

    标签: laravel laravel-sanctum


    【解决方案1】:

    你必须试试这个

                    $credentials = [
                                'email' => $request->email,
                                'password' => $request->password
                            ];
                          
                            
                            if (Auth::guard()->attempt(['email' => $request->email, 'password' => $request->password])) {
                                $token = auth()->user()->createToken('token_name')->accessToken;
                                return response()->json(['token' => $token,'Token Details' => auth()->user()], 200);
                            } else {
                                return response()->json(['error' => 'UnAuthorised'], 401);
                            }
    

    【讨论】:

    • 当我登录刷新时,我看到未登录的消息 auth::check() 失败
    • Auth::guard('app')->attempt(['email' => $request->email, 'password' => $request->password]) 你已经添加了身份验证名称也在这里 auth('app')->user();像这样然后试试这个
    【解决方案2】:

    你有if (!Hash::check($request-&gt;password, $user-&gt;password)) 这意味着如果密码和哈希匹配,您将获得false。删除if 语句中的!

    另外我不明白,当您已经在使用 auth()-&gt;attempt() 对用户进行身份验证时,为什么还要使用 Hash::check()

    【讨论】:

    • 对不起!不应该在那里。我从教程中复制了这个,感觉这是多余的
    猜你喜欢
    • 2022-09-29
    • 2021-07-17
    • 2023-03-10
    • 2021-10-20
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 2016-03-16
    相关资源
    最近更新 更多