所以我看了很多关于如何注册以及如何使用laravel登录的信息,我已经让我的用户注册成功了。单独登录成功。但是当你注册时,它并不认为你是登录的,无论我尝试什么,我似乎无法让它工作。
这是我的登录信息:
$userdata = array(
'username' => Input::get('email'),
'password' => Input::get('password')
);
if ( Auth::attempt($userdata) ) {
return Redirect::to('home');
} else {
return Redirect::to('login')
->with('login_errors', true);
}
哪个有效,没问题。
这是我的注册:
$user = new User;
$user->username = Input::get('username');
$user->email = Input::get('email');
$user->password = Hash::make('password');
$user->save();
return Redirect::to('home');
这也有效,因为在用户创建时,用户可以选择登录。但是,如果我添加完全相同的Auth::attempt()
,它会失败,所有其他Auth::check()
的检查已经尝试过失败。什么是我做错了?
答案 0 :(得分:1)
如果Auth :: attempt()需要一个像你提到的数组,为什么不直接将你刚创建的$ user作为一个数组返回并在重定向之前将其传递给attempt方法?再一次,不熟悉Laravel,但根据你的代码示例,我认为这应该有用..这样的事情可能:
$user = new User;
$user->username = Input::get('username');
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->save();
$userdata = array(
'username' => $user->username,
'password' => $user->password
);
if ( Auth::attempt($userdata ) ) {
return Redirect::to('home');
}
答案 1 :(得分:1)
Hash :: make()不检索给定参数的发布值。
而不是Hash::make('password');
,请尝试Hash::make(Input::get('password'));
。
我的观点是,您的用户现在拥有密码“密码”,而不是填写在注册表中的密码。