gpt4 book ai didi

php - laravel 5.4 中 ResetPasswords.php 中未定义路由 [password.reset]

转载 作者:行者123 更新时间:2023-12-02 23:40:29 27 4
gpt4 key购买 nike

我在自定义应用程序中遇到此错误:

InvalidArgumentException in UrlGenerator.php line 304: 
Route [password.reset] not defined.

我知道 laravel 提供了开箱即用的密码重置功能,但我想编写自己的类和路由。

这是我在 web.php 中的路线

// Password reset link request routes...
Route::get('password/email', 'Auth\PasswordController@getResetEmail');
Route::post('password/email', 'Auth\PasswordController@postResetEmail');

// Password reset routes...
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');

这是我的密码 Controller :

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Foundation\Auth\ResetsPasswords;

class PasswordController extends Controller {



use ResetsPasswords;

/**
* Create a new password controller instance.
*
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
* @return void
*/
public function __construct(Guard $auth, PasswordBroker $passwords)
{
$this->auth = $auth;
$this->passwords = $passwords;
$this->middleware('guest');
}
}

这是我的 ResetPasswords.php 特征:

namespace Illuminate\Foundation\Auth;

use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Password;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

trait ResetsPasswords
{
use RedirectsUsers;

/**
* Display the form to request a password reset link.
*
* @return \Illuminate\Http\Response
*/
public function getResetEmail()
{
return view('public.auth.password');
}

/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function postResetEmail(Request $request)
{
$this->validate($request, ['email' => 'required|email']);

$response = Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});

switch ($response) {
case Password::RESET_LINK_SENT:
return redirect()->back()->with('status', trans($response));

case Password::INVALID_USER:
return redirect()->back()->withErrors(['email' => trans($response)]);
}
}

/**
* Get the e-mail subject line to be used for the reset link email.
*
* @return string
*/
protected function getEmailSubject()
{
return property_exists($this, 'subject') ? $this->subject : 'Your Password Reset Link';
}

/**
* Display the password reset view for the given token.
*
* @param string $token
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getReset($token = null)
{
if (is_null($token)) {
throw new NotFoundHttpException;
}

return view('public.auth.reset')->with('token', $token);
}

/**
* Reset the given user's password.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function postReset(Request $request)
{
$this->validate($request, [
'token' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed|min:6',
]);

$credentials = $request->only(
'email', 'password', 'password_confirmation', 'token'
);

$response = Password::reset($credentials, function ($user, $password) {
$this->resetPassword($user, $password);
});

switch ($response) {
case Password::PASSWORD_RESET:
return redirect($this->redirectPath())->with('status', trans($response));

default:
return redirect()->back()
->withInput($request->only('email'))
->withErrors(['email' => trans($response)]);
}
}

/**
* Reset the given user's password.
*
* @param \Illuminate\Contracts\Auth\CanResetPassword $user
* @param string $password
* @return void
*/
protected function resetPassword($user, $password)
{
$user->password = bcrypt($password);

$user->save();

Auth::login($user);
}
}

问题是当我按下密码重置表单按钮时,它会导致该错误。

如有任何帮助,我们将不胜感激...

最佳答案

这些路线需要一个名称。

这里是代码..

// Password reset link request routes...
Route::get('password/email', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.email');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');

// Password reset routes...
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.request');
Route::post('password/reset', 'Auth\ResetPasswordController@postReset')->name('password.reset');

关于php - laravel 5.4 中 ResetPasswords.php 中未定义路由 [password.reset],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44049706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com