想修改密验证方式为 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'];
    }

请问这样修改后是不是还存在哪里的疏忽呢,导致框架无法检测到我已经登录?
恳请大家提供下思路,谢谢!

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

在两个多小时的磕磕碰碰里,最后发现可以返回正确了,在使用Auth的时候,加入守护者就可以正常输出“Auth::guard('member')->check()” 这是因为我在配置的时候就配置了守护者 所以我在用Auth输出的时候,得指定在可以获取到吗?

4年前 评论
讨论数量: 2

在两个多小时的磕磕碰碰里,最后发现可以返回正确了,在使用Auth的时候,加入守护者就可以正常输出“Auth::guard('member')->check()” 这是因为我在配置的时候就配置了守护者 所以我在用Auth输出的时候,得指定在可以获取到吗?

4年前 评论

这里以我的守护者为例,指定为auth('member')->user() 就可以正常使用了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!