Laravel 5 Auth :: attempt()总是返回false

时间:2015-09-14 10:44:34

标签: php authentication laravel-5

我是laravel的新手,我在认证方面遇到了困难。我不知道这段代码有什么问题,有人可以帮我解决这个问题吗?我在Stackoverflow中已经阅读了很多答案,到目前为止,它们都没有奏效。

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

P.S。 我还测试了它是否生成了正确的哈希,似乎没问题。

控制器:

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'];

}

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

我有一个单独的登录管理员和用户,也许这是导致问题。它可能没有查看正确的表,因为admin auth可以工作。如何显示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');
});

});

1 个答案:

答案 0 :(得分:0)

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

为了使Eloquent ORM有效,它必须有一个数据库。相关配置应该在config / database.php,然后你应该检查这样的表是否存在。另一方面,如果不希望连接到config / database.php中的默认数据库,则可能无法在Eloquent中正确设置连接

小点,还要确保您的config / auth.php正确执行。 auth.php应该在默认设置下使用您的代码。