Laravel注册表不会记录用户

时间:2013-03-30 03:20:43

标签: authentication login registration laravel

所以我看了很多关于如何注册以及如何使用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()的检查已经尝试过失败。什么是我做错了?

2 个答案:

答案 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'));。 我的观点是,您的用户现在拥有密码“密码”,而不是填写在注册表中的密码。