www.6766.comLaravel的Auth验证Token验证使用自定义Redis的例子_php实例_脚本之家

项目用户量逐渐增大,接口调用次数越来越多,所以决定使用Redis存token,缓解数据库压力

修改config/auth.php用户的auth的驱动为redis。

createModel; foreach ($credentials as $key => $value) { if (! Str::contains { $query->where; } } return $query->first(); } $token = $credentials['token']; $redis = Cache::getRedis(); $userId = $redis->get; return $this->retrieveById; }}

背景

改完代码以后发现无法正常登录,一直提示用户或密码错误。。。然后看看了下用户认证方法是

然后在AuthServiceProvider.php文件下修改如下代码

于是修改RedisUserProvider文件

因为我们是需要在当前的Auth验证基础之上添加一层Redis缓存,所以最简单的办法继承EloquentUserProvider类,重写

model = $model; $this->hasher = $hasher; } /** * Retrieve a user by their unique identifier. * * @param mixed $identifier * @return IlluminateContractsAuthAuthenticatable|null */ public function retrieveById { return $this->createModel->find; } ... /** * Retrieve a user by the given credentials. * * @param array $credentials * @return IlluminateContractsAuthAuthenticatable|null */ public function retrieveByCredentials { if  { return; } // First we will add each credential element to the query as a where clause. // Then we can execute the query and, if we found a user, return it in a // Eloquent User "model" that will be utilized by the Guard instances. $query = $this->createModel; foreach ($credentials as $key => $value) { if (! Str::contains { $query->where; } } return $query->first(); }...}

retrieveByCredentials方法所以我们新建RedisUserProvider.php文件

以上这篇Laravel的Auth验证Token验证使用自定义Redis的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

后续

 public function boot { $this->registerPolicies; //将redis注入Auth中 Auth::provider('redis',function{ return new RedisUserProvider($app['hash'], $config['model']); }); }
get; return $this->retrieveById; }}

然后登录成功啦!皆大欢喜!

在config/auth.php文件中发现用户的驱动使用的是EloquentUserProvider服务提供器,然后查找EloquentUserProvider.php
然后发现在vendor/laravel/framework/src/Illuminate/Auth文件下存在该文件

实现代码

调研

auth->once;然后看是在

IlluminateAuthSessionGuard文件中用到了RedisUserProvider文件中retrieveByCredentials方法中对用户进行密码验证,

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图