【问题标题】:Unable to authenticate a user in Laravel: 'invalid username or password'无法在 Laravel 中对用户进行身份验证:“无效的用户名或密码”
【发布时间】:2016-03-09 14:50:23
【问题描述】:

我的用户名和密码通过从我的视图到控制器的发布请求传递。负责处理 post 请求的控制器:

public function postLogin(Request $request) {
        $this->validate($request, [
            'username' => 'required',
            'password' => 'required'
        ]);

        if (!Auth::attempt([
            'username' => $request['username'],                    
            'password' => $request['password'] ])) { 
            return redirect()->back()->with(['fail' => 'invalid username or password']);      
        }

        return redirect()->route('auth.dashboard');                            
    }

问题是我不断收到“失败”消息:“用户名或密码无效”。

我查看了phpmyadmin里面的表格,用户名和密码很简单(用户名:Admin &密码:12345)。

这是 admins 表的数据库:

class CreateAdminsTable extends Migration
{

    public function up()
    {
        Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
            $table->string('username')->unique();
            $table->string('password');
            $table->rememberToken();
        });
    }

    public function down()
    {
        Schema::drop('admins');
    }
} 

作为参考,我使用的是 Laravel 5.2

更新1:用户是通过注册控制器创建的,注册控制器将用户名和密码存储在数据库中。这是控制器:

public function postRegister(Request $request) {

        $admin = new Admin();

        $this->validate($request, [
            'username' => 'required|unique:admins|max:30|min:3',
            'password' => 'required|min:5',
            'password_confirm' => 'required'           
        ]);

        $password = $request['password'];
        $passwordConfirm = $request['password_confirm'];

        if ($password !== $passwordConfirm) {
            return redirect()->back()->with(['fail' => 'password fields do not match!']);
        }     
        $hashedPassword = password_hash($password, PASSWORD_BCRYPT);

        $admin->username = $request['username'];
        $admin->password = $hashedPassword;
        $admin->save();

        return redirect()->route('index')->with(['success' => 'Successfully created account!']);       

    }

【问题讨论】:

  • 我更喜欢使用 Hash::make 而不是 password_hash。因为 Hash::make 中有一个附加选项被传递给 password_hash。这就是哈希不匹配的原因
  • 解决了!请输入此作为答案,以便我投票并打勾。

标签: php laravel


【解决方案1】:

我更喜欢使用 Hash::make 而不是 password_hash。因为 Hash::make 中有一个附加选项被传递给 password_hash。这就是哈希不匹配的原因

【讨论】:

  • 干杯!这解决了它。
【解决方案2】:

你总是在 Auth::attempt 中得到错误,因为你的数据库中的密码不是散列的。首先在您的数据库中散列您的密码。您可以使用播种机在数据库中播种

class UserSeeder extends Seeder
{
    public function run()
    {
       //your admin model
       Admin::create([
            'username' => 'admin',
            'password' => Hash::make(123)
       ]);
     }
}

希望这会有所帮助。

【讨论】:

  • 我正在根据布鲁斯的评论对密码进行哈希处理。请看上面的更新!
  • 另外,我不想使用播种机,因为我希望能够让用户注册,但是,当我尝试上面的代码时,它运行良好。
【解决方案3】:

请用以下代码更改登录功能。

public function postLogin(Request $request) {
        $this->validate($request, [
            'username' => 'required',
            'password' => 'required'
        ]);

        if (Auth::attempt([
            'username' => $request['username'],                    
            'password' => $request['password'] ],$remember)) { 
            return redirect()->route('auth.dashboard');            
        }
        return redirect()->back()->with(['fail' => 'invalid username or password']);

    }

注意:这里的$remember 应该是 1/0 或 TRUE/FALSE。

希望这会对你有所帮助。

【讨论】:

  • 我复制粘贴了你的代码,我得到了错误“未定义的变量记住”,然后我将它设置为true并将它传递给尝试方法,我得到了和以前一样的错误。
  • @Frosty619 确定你在数据库中的密码是什么,是什么格式的? Laravel 使用哈希函数将密码存储在数据库中。你仍然会得到同样的错误,然后将哈希值存储在数据库的密码列中,然后重试。
【解决方案4】:

Laravel 需要散列密码。 因此,如果 phpmyadmin 中的密码可见,则无法在 Laravel 中进行验证。我希望 phpmyadmin 中的密码看起来像这样 $2y$13$Cn0gwiUfg2mq5Y3/V98aB.NZ4GJqjbwhvKlsSAOYkVNHKlWRmwZ1W

【讨论】:

  • 根据您的评论,我在注册控制器中添加了 password_hash 方法。我创建了一个新管理员,其密码在 phpmyadmin 中存储为散列字符串,但我仍然遇到相同的错误。请参阅更新以获取更多信息。谢谢!
  • 试试答案stackoverflow.com/a/35884495/21460,因为我对laravel只有表面的了解
  • 不用担心,感谢您的帮助!我对使用 Seeder 不感兴趣,因为我希望用户能够注册。
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多