首页 文章

这些凭据与我们的记录不符

提问于
浏览
1

我有一个laravel的应用程序,其中,我有不同的用户和不同的角色 . 我使用播种机在我的数据库中插入了一些用户,角色,role_user,permission和permission_role但是,当我尝试使用已经记录在DB中的电子邮件和密码登录时,我得到:这些凭据与我们的记录不匹配 .

这是UserTableSeeder:

public function run()
{
    //

    $user = [
        [
            'name' => 'admin',
            'email' => 'admin@mail.co',
            'password' => 'passwordadmin'
        ],
        [
            'name' => 'president',
            'email' => 'President@mail.co',
            'password' => 'passwordpresident'
        ],
        [
            'name' => 'utilisateur1',
            'email' => 'utilisateur1@mail.co',
            'password' => 'passworduser'
        ],
        [
            'name' => 'utilisateur2',
            'email' => 'utilisateur2@mail.co',
            'password' => 'passworduser'
        ]
    ];

    foreach ($user as $key => $value) {
        User::create($value);
    }
}

RoleTableSeeder:

public function run()
{
    //

    $role = [
        [
            'name' => 'admin',
            'display_name' => 'Administrateur',
            'description' => 'Administrateur du système'
        ],
        [
            'name' => 'president',
            'display_name' => 'Président',
            'description' => 'President de la commune'
        ],
        [
            'name' => 'utilisateur_normal',
            'display_name' => 'membre du conseil',
            'description' => 'membre du conseil'
        ]
    ];

    foreach ($role as $key => $value) {
        Role::create($value);
    }
}

RoleUserTableSeeder:

public function run()
{
    //

    DB::table( 'role_user' )->insert([
        [ 'user_id' => 6, 'role_id' => 4 ],
        [ 'user_id' => 7, 'role_id' => 5 ],
        [ 'user_id' => 8, 'role_id' => 6 ],
        [ 'user_id' => 9 , 'role_id' => 6 ],            
    ]);

}

我拥有的模型:用户,角色,权限 .

有什么想法吗?

2 回答

  • 2

    正如Troyer所说,你需要用bcrypt对它们进行哈希处理 . Laravel使用\ Hash :: make($ str)提供了一个方便的包装器 .

    以明文形式提供密码是非常糟糕的做法 .

    你需要像这样运行你的播种机:

    public function run()
    {
        $users = [
            [
                'name' => 'admin',
                'email' => 'admin@mail.co',
                'password' => \Hash::make('passwordadmin') // Hash them in order to make use of \Auth library (and more importantly, in order not to be a dick to your users)
            ],
            [
                'name' => 'president',
                'email' => 'President@mail.co',
                'password' => \Hash::make('passwordpresident')
            ],
            [
                'name' => 'utilisateur1',
                'email' => 'utilisateur1@mail.co',
                'password' => \Hash::make('passworduser')
            ],
            [
                'name' => 'utilisateur2',
                'email' => 'utilisateur2@mail.co',
                'password' => \Hash::make('passworduser')
            ]
        ];
        User::create($users); // Import them with 1 query for performance
    }
    
  • 1

    看起来你没有将密码哈希到数据库中,你需要使用 bycript

    public function run()
    {
        //
    
    $user = [
        [
            'name' => 'admin',
            'email' => 'admin@mail.co',
            'password' => bcrypt('passwordadmin')
        ],
        [
            'name' => 'president',
            'email' => 'President@mail.co',
            'password' => bcrypt('passwordpresident')
        ],
        [
            'name' => 'utilisateur1',
            'email' => 'utilisateur1@mail.co',
            'password' => bcrypt('passworduser')
        ],
        [
            'name' => 'utilisateur2',
            'email' => 'utilisateur2@mail.co',
            'password' => bcrypt('passworduser')
        ]
    ];
    
    foreach ($user as $key => $value) {
        User::create($value);
    }
    }
    

    您可以在oficial seeder Laravel documentation.上看到更多播种机示例

相关问题