想修改密验证方式为 MD5,修改后,无法正确获取到登录状态,Auth::check 为 flase
问题描述
因为一个旧项目要迁移到Laravel这个框架,前项目的用户密码是用的MD5加密。
所以对用户验证这一块做了修改,在网上找的方法教程,然后修改成MD5的加密方式,测试表单登录验证是可以通过的,但是却无法通过Auth::check() 返回flase;
请各位厉害的coder能够帮忙提点一下可能需要注意的地方,让我有个思路,谢谢!
以下是源码:
文件:MemberEloquentUserProvider
<?php
namespace App\Models;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable;
class MemberEloquentUserProvider extends EloquentUserProvider
{
public function validateCredentials(Authenticatable $user, array $credentials)
{
// 重定义验证规则
$plain = $credentials['password'];
$authPassword = $user->getAuthPassword();
return md5($plain) == $authPassword;
}
}
文件:Member
在用户的模型里重新定义了password的字段 因为数据库的字段不是password而是userpass
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Member extends Authenticatable
{
//
protected $table = 'mku_user';
protected $primaryKey = 'id';
public $timestamps = true;
public const CREATED_AT = 'createDate';
public const UPDATED_AT = 'updateDate';
protected $fillable = [
'mobile',
'userpwd',
'status',
];
protected $hidden = [
'password', 'remember_token',
];
// 获取表单里的password字段
public function getAuthPassword()
{
return $this->attributes['userpwd'];
}
请问这样修改后是不是还存在哪里的疏忽呢,导致框架无法检测到我已经登录?
恳请大家提供下思路,谢谢!
在两个多小时的磕磕碰碰里,最后发现可以返回正确了,在使用Auth的时候,加入守护者就可以正常输出“Auth::guard('member')->check()” 这是因为我在配置的时候就配置了守护者 所以我在用Auth输出的时候,得指定在可以获取到吗?