0

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

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

有一个名为 users 的表,它是之前使用 Migrations 创建的,并且有一个电子邮件 = 'test@test.com' 和密码 = 'test' 的行。

非常感谢。

路由.php

Route::any('login', 'auth@login');

控制器/auth.php

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.";
        }        
    }
}

auth/login.blade.php

{{ Form::open() }}

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

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

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

{{ Form::close() }}

配置/auth.php

'driver' => 'eloquent',
'username' => 'email',
'password' => 'password',
'model' => 'User',
'table' => 'users',

模型/user.php

class User extends Eloquent
{

}
4

3 回答 3

2

Laravel 论坛的 AndrewB 回答了这个问题:

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

@AndrewB,做到了。书中的示例没有使用哈希,但是当我将您的建议添加到 post_update 函数以编辑用户时,它起作用了。

谢谢。

于 2013-03-28T02:32:24.813 回答
1

我看到您正在使用 restful 控制器“get_login() 和 post_login()”,但您没有将其声明为 restful。您需要将该属性添加到“用户”控制器

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

你也可以将它添加到基本控制器中

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

我的(复制和粘贴)代码顺便说一句:-)

于 2013-04-02T10:06:11.510 回答
0

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

于 2013-03-27T22:32:27.407 回答