Laravel 4重置密码

时间:2013-07-15 12:32:53

标签: php laravel laravel-4

我从laravel文档中复制了一个示例:

public function postResetPassword() {
    $credentials = array('email' => Input::get('email'));

    return Password::reset($credentials, function($user, $password) {
        $user->password = Hash::make($password);

        $user->save();

        return Redirect::to('/');
    });
}

但似乎返回Redirect :: to('/')不起作用,因为我得到一个错误,告诉找不到控制器方法,而不是主页。 但是如果我这样编写代码:

    $credentials = array('email' => Input::get('email'));

    Password::reset($credentials, function($user, $password) {
        $user->password = Hash::make($password);

        $user->save();
    });

    return Redirect::back();

虽然我无法理解如何获得会话闪存变量(实际上我得到它们),但它有效。

另一个问题是关于密码长度(6个字符)的规则在哪里写的?我可以改变它们吗?

2 个答案:

答案 0 :(得分:1)

要回答为什么您的第一个代码示例不起作用的原因是,如果您查看app/routes.php文件,则应该看到Route::get('/', 'HomeController@index');的内容。 @符号前面的部分是控制器的名称,而后面的部分是请求路径时在控制器中调用的方法。确保定义了方法。

查看following后。我认为你应该将重定向放在你给出的闭包内作为return语句。

然后,在您使用以下Session::get('key');重定向用户后,如何检索已闪回会话的数据。

关于您的上一个问题,请查看以下documentation

例如:

$validator = Validator::make(
            array('email' => Input::get('email'), 'password' => Input::get('password'), 'password_confirm' => Input::get('password_confirm')),
            array('email' => 'required|unique:users,email|email', 'password' => 'required|min:3|max:20|same:password_confirm')
        );

传递的第二个数组是您可以修改验证器规则的地方。

答案 1 :(得分:0)

回答有关更改密码验证规则的第二个问题。

密码外观扩展PasswordBroker.php,其功能在第208行:

/**
 * Set a custom password validator.
 *
 * @param  \Closure  $callback
 * @return void
 */
public function validator(Closure $callback)
{
    $this->passwordValidator = $callback;
}

因此,要覆盖默认密码验证器,只需从控制器进行此调用:

Password::validator(function(){ 
    //validator in here 
});