密码重置带有令牌的Laravel 4.2



我是Laravel的新手,我在使用4.2版的系统上进行了一些测试。我正在尝试关注文档以进行密码重置。到目前为止

当我从电子邮件中打开电子邮件时,我会收到此错误:

异常'symfony component httpkernel extception notfoundhttpexception'

URL是:http://example.com/reset/20E2535A11F7C88D1132C55C752A3A3A3A8569ADBF5F

这是我的路线

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的表格

<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>

我理解错误..这是在说找不到路径/文件,但在那里。

在您的html表单中,有 action()方法称为 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']);

to:

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

我认为您可以使用这种方式。它也许更好:

Route::match(['GET','POST'], ['uses' => 'RemindersController@getRemind']);



更新:路由也应该有token,因为URL为/reset/token

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

检查您的默认控制器或默认的安全控制器是否未加载某个地方,也不会覆盖'重置'路由,使用命令行中的应用程序目录进入您的应用程序目录:

php artisan routes

这应该向您展示您的路线是否已注册以及哪个控制器/操作。

相关内容

  • 没有找到相关文章

最新更新