首页 > 解决方案 > Laravel Auth 尝试不使用自定义用户模型

问题描述

我为我的网站生成了一个不同的表来存储用户。表的名称是 tblusers。我正在使用控制器方法 register() 注册新用户,我在其中添加了此代码

public function register(){
    return User::create([
        'User_Email' => 'test@example.com',
        'User_UserName' => 'test@example.com',
        'User_Password' => bcrypt('123'),
        'User_Address' => 'ABCD....',
        'User_IsActive' => 1,
        'User_FullName' => 'Burhan Ahmed',
        'User_AppID' => 1,
        'User_IsVerified' => 1
    ]);
}

它在数据库中成功添加了上述虚拟数据。然后我尝试使用以下代码使用上述给定凭据登录:

dd(Auth::attempt(['User_UserName' => 'test@example.com', 'User_Password' => '123']));

但是上面的语句总是返回false,为什么?我错过了什么吗。我试图在上面的数组中传递实际的 bcrypt 代码而不是 '123' 它总是返回相同的结果。下面是我的模型类

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\DB;

//class User extends Authenticatable
class User extends Authenticatable
{
    use Notifiable;
    protected $table = 'tblusers';
    protected $primaryKey = 'User_ID';
    public $timestamps = false;
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'User_UserName', 'User_Email', 'User_Password', 'User_Address', 'User_FullName', 'User_IsActive', 'User_IsVerified'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'User_Password'
    ];
}

我使用的是 Laravel 5.4,我遵循了所有的身份验证步骤,但无论我通过什么,它总是返回 false。

标签: phplaravellaravel-5eloquent

解决方案


如果您想更改登录的默认表,请按照以下步骤操作

例如,您将其更改为login_table

步骤1:

更改User.php (用户模型)中的表属性

/**
 * The table associated with the model.
 *
 * @var string
 */
protected $table = 'login_table';

步骤1:

如果你是初学者

现在您需要将表名更改userslogin_table

如果项目是团队协作进行迁移login_table

php artisan make:migration create_login_table_table

并添加表中可用的users

第三步:

现在打开文件app\Http\Controllers\Auth\RegisterController.php

你会发现方法validator

protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

现在您需要更改unique:usersunique:login_table

protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:login_table',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

希望它对我有帮助,对我很好@Md.Sukel Ali

如果不起作用,请评论


推荐阅读