Auth::attempt()总是返回false


Laravel 5 Auth::attempt() always returns false

我是laravel的新手,我被困在身份验证中。我不知道这个代码有什么问题,有人能帮我吗?我在这里的Stackoverflow上读了很多答案,到目前为止没有一个是有效的。

我做了一个简单的代码只是为了测试Auth::attempt()。我所遵循的大多数教程都使用了这个简单的代码。在Auth工作之前,我需要配置其他东西吗?为什么这么复杂?

注:我还测试了它是否生成正确的哈希值,它似乎很好。

控制器:

public function index()
{
    $user = new User;
    $user->email = 'q21@q.com';
    $user->password = Hash::make('123456');
    $user->save();
    $userData = array('email' => 'q21@q.com', 'password' => '123456');            
    var_dump(Auth::attempt($userData));
}

模型:

<?php namespace App;
use Illuminate'Auth'Authenticatable;
use Illuminate'Database'Eloquent'Model;
use Illuminate'Auth'Passwords'CanResetPassword;
use Illuminate'Contracts'Auth'Authenticatable as AuthenticatableContract;
use Illuminate'Contracts'Auth'CanResetPassword as CanResetPasswordContract;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
use Authenticatable, CanResetPassword;
protected $table = 'users';
protected $fillable = ['email', 'password'];
protected $hidden = ['password', 'remember_token'];

}

更新……下面是我的用户表迁移脚本。

我有一个单独的登录管理员和用户,也许这是导致问题。它可能没有查看正确的表,因为管理权限在工作。如何显示Auth中使用的SQL ?

用户表迁移脚本

Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('firstname');
        $table->string('lastname');
        $table->string('email')->unique();
        $table->string('password');
        $table->timestamps();
    });

路线:

Route::group(['prefix' => 'api'], function()
{
    Route::post('user/login','UserController@login');
    Route::group(['middleware' => ['jwt.auth','jwt.refresh']], function()
    {
        Route::resource('user','UserController');
    });
});

Route::group(['prefix' => 'admin'], function()
{
Route::get('/', 'AdminController@index');
Route::get('login', 'AdminController@postlogin');
Route::post('login', 'AdminController@postlogin');
Route::get('logout', function(){
    Auth::logout();
    return Redirect::to('admin');
});
Route::group(['middleware' => ['auth']], function()
{
    Route::resource('messages', 'MessageController');
});
});

我怀疑你没有正确设置数据库。

为了使Eloquent ORM工作,它必须有一个数据库。相关的配置应该在config/database.php,然后你应该检查这样的表是否存在。另一方面,如果您不希望连接到config/database.php

中的默认数据库,则可能没有在Eloquent中正确设置连接。

次要的一点,也要确保你的config/auth.php做得正确。Auth.php应该与默认设置下的代码一起工作。