密码重置laravel 4.2与令牌

时间:2016-12-06 12:09:57

标签: php laravel-4

我是Laravel的新手,我在使用4.2版本的系统上进行了一些测试。我正在尝试按Documentation进行密码重置。到目前为止,我可以发布我的电子邮件以重置密码,并在我的电子邮件中获得令牌。

当我使用令牌从电子邮件中打开URL时出现此错误:

  

异常'Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException'

网址为:http://example.com/reset/20e2535a11f7c88d1132c55c752a3a8569adbf5f

这是我的路线

Route::get('/password', ['uses' => 'RemindersController@getRemind']);
Route::get('/reset', ['uses' => 'RemindersController@getReset']);

这是RemindersController

public function getReset($token = null)
{
    if (is_null($token)) App::abort(404);

    return View::make('site.reset')->with('token', $token);
}

来自doc's的表格

<form action="{{ action('RemindersController@postReset') }}" method="POST">
    <input type="hidden" name="token" value="{{ $token }}">
    <input type="email" name="email">
    <input type="password" name="password">
    <input type="password" name="password_confirmation">
    <input type="submit" value="Reset Password">
</form>

我理解错误..它说的是找不到路径/文件但它就在那里..

2 个答案:

答案 0 :(得分:1)

检查您的默认控制器或默认安全控制器是否未在某处加载,并且不会覆盖“重置”路由,使用命令行进入应用程序目录并键入:

php artisan routes

这应该显示您的路线是否已注册以及您的路线是哪个。

答案 1 :(得分:1)

在您的html表单中,有一个名为action()的{​​{1}}方法:

RemindersController@postReset

但您的路线使用<form action="{{ action('RemindersController@postReset') }}" method="POST"> <input type="hidden" name="token" value="{{ $token }}"> <input type="email" name="email"> <input type="password" name="password"> <input type="password" name="password_confirmation"> <input type="submit" value="Reset Password"> </form> 。您必须使用GET

改变您的路线:

POST

为:

Route::get('/reset', ['uses' => 'RemindersController@getReset']);

我认为你可以用这种方式。它可能更好:

Route::post('/reset', ['uses' => 'RemindersController@getReset']);



更新:路由中还应包含Route::match(['GET','POST'], ['uses' => 'RemindersController@getRemind']); ,因为网址为token

/reset/token