我相信我完全按照书中的步骤进行了操作,但即使我在数组中手动提供凭据,也无法让用户登录。
有人能看看下面,看看我哪里出错了吗?
有一个名为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
{
}
来自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;
....
我的(副本
确保字段用户名实际存储电子邮件地址。