1

因此,我查看了有关如何注册以及如何使用 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()检查都失败了。我做错了什么?

4

2 回答 2

1

如果 Auth::attempt() 需要像您提到的那样的数组,为什么不直接将您刚刚创建的 $user 作为数组取回并在重定向之前将其传递给尝试方法?同样,不熟悉 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');
    }
于 2013-03-30T03:32:05.217 回答
1

Hash::make() 不检索给定参数的发布值。

而不是Hash::make('password');,尝试Hash::make(Input::get('password'));。我的猜测是您的用户现在拥有密码“密码”,而不是他们在注册表单中填写的密码。

于 2013-03-30T14:15:31.223 回答