首页 文章

laravel 5.4忘记密码了

提问于
浏览
1

Laravel 5.4 PHP 5.6 XAMPP localhost

我已经设置了一个基本的laravel应用程序,我运行命令:

php artisan make:auth

创建auth脚手架

然后跑了命令

php artisan migrate

更新数据库并创建必要的表

我可以注册用户,登录并注销 . 但是其他任何身份验证都不起作用 .

这是我尝试localhost /密码/电子邮件时收到的错误

(1/1) MethodNotAllowedHttpException
in RouteCollection.php (line 251)
at RouteCollection->methodNotAllowed(array('POST'))
in RouteCollection.php (line 238)
at RouteCollection->getRouteForMethods(object(Request), array('POST'))
in RouteCollection.php (line 176)
at RouteCollection->match(object(Request))
in Router.php (line 546)
at Router->findRoute(object(Request))
in Router.php (line 525)
at Router->dispatchToRoute(object(Request))
in Router.php (line 511)
at Router->dispatch(object(Request))
in Kernel.php (line 176)
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
in Pipeline.php (line 30)
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php (line 30)
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php (line 148)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php (line 30)
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php (line 148)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in ValidatePostSize.php (line 27)
at ValidatePostSize->handle(object(Request), object(Closure))
in Pipeline.php (line 148)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in CheckForMaintenanceMode.php (line 46)
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
in Pipeline.php (line 148)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in Pipeline.php (line 102)
at Pipeline->then(object(Closure))
in Kernel.php (line 151)
at Kernel->sendRequestThroughRouter(object(Request))
in Kernel.php (line 116)
at Kernel->handle(object(Request))
in index.php (line 54)

但是这个方法不允许对我有意义,因为我的Router.php是这样的:

// Password Reset Routes...
    $this->get('password/reset', 
'Auth\ForgotPasswordController@showLinkRequestForm')-
>name('password.request');
    $this->post('password/email', 
'Auth\ForgotPasswordController@sendResetLinkEmail')-
>name('password.email');
    $this->get('password/reset/{token}', 
'Auth\ResetPasswordController@showResetForm')->name('password.reset');
    $this->post('password/reset', 'Auth\ResetPasswordController@reset');

还有我的email.blade.php

...
<form class="form-horizontal" method="POST" action="{{ 
route('password.email') }}">
                    {{ csrf_field() }}
...

注意方法=“POST”

我的web.php有“Auth:routes();”

有人可以帮忙吗?

在线文档听起来好像运行php artisan make:auth是正确的身份验证流程所需要的,但是如果您的用户忘记了密码怎么办?

另一件事,laravel文档说:要开始,请验证您的App \ User模型是否实现了Illuminate \ Contracts \ Auth \ CanResetPassword Contract .

这是我的模型User.php

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;

class User extends Authenticatable
{
use Notifiable;
use CanResetPassword;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}
}

1 回答

  • 0

    当您使用GET调用URL时"try" localhost/password/email . 此路由( /password/email )在 router.php 中注册为POST路由,这就是您收到错误的原因 .

    重置密码的URL应为 /password/reset .

    另一件事,laravel文档说:要开始,请验证您的App \ User模型是否实现了Illuminate \ Contracts \ Auth \ CanResetPassword Contract .

    它在哪里说呢? https://laravel.com/docs/5.4/authentication

相关问题