提问者:小点点

Laravel Auth::attempt从示例在Laravel PHP入门书只返回false


我相信我完全按照书中的步骤进行了操作,但即使我在数组中手动提供凭据,也无法让用户登录。

有人能看看下面,看看我哪里出错了吗?

有一个名为users的表,它是在前面使用迁移创建的,还有一行包含emailtest@test.com'和密码='测试'。

非常感谢。

Route::any('login', 'auth@login');
class Auth_Controller extends Base_Controller 
{
    public function get_login()
    {
        return View::make('auth.login');
    }

    public function post_login()
    {
        $credentials = array(
            'username' => Input::get('email'),
            'password' => Input::get('password')
        );

        if(Auth::attempt($credentials))
        {
            return "User has been logged in.";
        }
        else
        {
            //return Redirect::back()->with_input();
            return "User has not been logged in.";
        }        
    }
}
{{ Form::open() }}

    Email: {{ Form::text('email', Input::old('email')) }} <br />

    Password: {{ Form::password('password') }} <br />

    {{ Form::submit('Login') }}

{{ Form::close() }}
'driver' => 'eloquent',
'username' => 'email',
'password' => 'password',
'model' => 'User',
'table' => 'users',
class User extends Eloquent
{

}

共3个答案

匿名用户

来自Laravel论坛的AndrewB回答说:

好的,内置的身份验证需要对密码进行哈希处理——您可以使用hash::make('mypassword')创建一个哈希,并将结果放入数据库,然后您应该能够登录。

@安德烈,成功了。书中的例子没有使用Hash,但当我将您的建议添加到post_update函数中以编辑用户时,它起了作用。

谢谢。

匿名用户

我看到您正在使用restful控制器“get_login()

class Auth_Controller extends Base_Controller 
{
    public $restful = true;
    ...

您也可以将其添加到基本控制器,如果您使用的教程与我的“Shawn McCool的Laravel Starter”相同,那么他在第19页提到了这一点

class Base_Controller extends Controller
{
    public $restful = true;
    ....

我的(副本

匿名用户

确保字段用户名实际存储电子邮件地址。