一个懒人专用文章归档神器,如果你不能成为压路机的一部分,那么你就只能成为道路的一部分 Bala~bala~

auth()->attempt($credentials)到底是什么?

php 懒人 1460℃ 0评论

if (! $token = auth()->attempt($credentials)) {
return response()->json([‘error’ => ‘账号或密码错误’], 401);
}

这部分是 laravel guard 的知识

我们在 config/auth 中设置了不同的 guard

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

    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
],

\Auth::guard (‘api’) 意思是使用 api guard,根据配置使用的 driver 是 jwt,provider 是 users。

driver jwt 在 jwt-auth 这个扩展中定义了

vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php

.
.
.
    protected function extendAuthGuard()
    {
        $this->app['auth']->extend('jwt', function ($app, $name, array $config) {
            $guard = new JwtGuard(
                $app['tymon.jwt'],
                $app['auth']->createUserProvider($config['provider']),
                $app['request']
            );

            $app->refresh('request', $guard, 'setRequest');

            return $guard;
        });
    }
.
.
.

你会看到最终是执行的 vendor/tymon/jwt-auth/src/JwtGuard.php 中的 attempt 方法

    public function attempt(array $credentials = [], $login = true)
    {
        $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);

        if ($this->hasValidCredentials($user, $credentials)) {
            return $login ? $this->login($user) : true;
        }

        return false;
    }

所以最后返回了 token

来源:https://learnku.com/laravel/t/10822/auth-guard-api-attempt-credentials-what-exactly-is-it

转载请注明:懒人档案室 » auth()->attempt($credentials)到底是什么?

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址