提问者:小点点

Laravel身份验证不起作用,永远不会返回true


我是Larave的新手,我制作了一个不起作用的登录表单,我搜索了很多关于这个问题的信息,发现这些问题和答案对我不起作用:

  1. 问题1

我读了这3个问题,再次不工作:

这是我的用户表:

id |用户名|密码|记住|令牌|创建|更新|在

1|e@so.com|testPass1

这是我的用户模型:

    <?php
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
    use UserTrait, RemindableTrait;
    public static $auth_rules=[
        'email'=>'required|email',
        'password'=>'required|between:3,18'
    ];
    protected $hidden = array('password', 'remember_token');
}

这是我的路线:

Route::group(array('prefix'=>'admin','before'=>'Auth'),function(){
    Route::resource('posts','AdminPostsController', array('except'=>array('show')));
});

这是过滤器(Auth):

 Route::filter('Auth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }
        else
        {
            return Redirect::guest('admin/login');
        }
    }
});

这是AdminAuthController,它将数据从登录发送到AdminAuthController@postLogin:

  //This is postLogin method:
    public function postLogin(){
     //Showing username and password
      echo 'Username:'.Input::get('email').'<br/>';
     echo 'Password:'.Input::get('password').'<br />';

     //If username and password: return true
  dd(Auth::attempt(array('username'=>Input::get('email'),'password'=>Input::get('password')     )));
   }

这是Laravel在浏览器中返回的内容:http://i.stack.imgur.com/9cq61.png


共1个答案

匿名用户

表中的密码需要散列!

您可以使用Hash::make('密码')来生成密码的哈希值。如果你想在开发中手动更新你的数据库,你可以使用artisan tinker来快速生成哈希:

php artisan tinker
> echo Hash::make('your-secret-password');

复制输出并更新数据库中的密码字段。

注意:db字段至少需要60个字符长