如何重写Laravel的attempt方法呢?因为加密方法是自定义的。
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何重写Laravel的attempt方法呢?因为加密方法是自定义的。,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2103字,纯文字阅读大概需要4分钟。
内容图文
![如何重写Laravel的attempt方法呢?因为加密方法是自定义的。](/upload/InfoBanner/zyjiaocheng/156/bdd692f1e1174374b682253359a28445.jpg)
Auth::attempt(array('username' => $username, 'password' => $password),false)
这个东西里头password是想用自己定义的方法加密
回复内容:
Auth::attempt(array('username' => $username, 'password' => $password),false)
这个东西里头password是想用自己定义的方法加密
文档确实没有写,但是我们可以看看源码
Auth方法的实现都在 Illuminate\Auth\Guard
里面
/**
* Attempt to authenticate a user using the given credentials.
*
* @param array $credentials
* @param bool $remember
* @param bool $login
* @return bool
*/
public function attempt(array $credentials = [], $remember = false, $login = true)
{
$this->fireAttemptEvent($credentials, $remember, $login);
$this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);
// 看这里
// If an implementation of UserInterface was returned, we'll ask the provider
// to validate the user against the given credentials, and if they are in
// fact valid we'll log the users into the application and return true.
if ($this->hasValidCredentials($user, $credentials)) {
if ($login) {
$this->login($user, $remember);
}
return true;
}
return false;
}
/**
* Determine if the user matches the credentials.
*
* @param mixed $user
* @param array $credentials
* @return bool
*/
protected function hasValidCredentials($user, $credentials)
{
// 执行认证驱动器的validCredentials方法
return ! is_null($user) && $this->provider->validateCredentials($user, $credentials);
}
默认是使用eloquent作为认证驱动器,所以看看Illuminate\Auth\EloquentUserProvider
里面的实现
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
所以如果要改验证的逻辑,可以继承原有的驱动器,然后重写validateCredentials里面的逻辑
class TestUserProvider extend EloquentUserProvider
{
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
return md5($plain) == $user->getAuthPassword();
}
}
最后设置驱动器,建议加载AppServiceProvider的boot()里面
Auth::setProvider(new TestUserProvider());
文档里有写!不要偷懒不看文档,你最近提的问题都是文档里写的。
内容总结
以上是互联网集市为您收集整理的如何重写Laravel的attempt方法呢?因为加密方法是自定义的。全部内容,希望文章能够帮你解决如何重写Laravel的attempt方法呢?因为加密方法是自定义的。所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。