auth.php
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'admins'=>[
'providers'=>'admins',
'table'=>'password_resets',
'expire'=>60,
'throttle'=>60,
],
],AdminForgotPasswordController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Support\Facades\Password;
class AdminForgotPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset emails and
| includes a trait which assists in sending these notifications from
| your application to your users. Feel free to explore this trait.
|
*/
use SendsPasswordResetEmails;
public function __construct(){
$this->middleware('guest:admin');
}
/**
* Display the form to request a password reset link.
*
* @return \Illuminate\Http\Response
*/
public function showLinkRequestForm()
{
return view('auth.passwords.admin-email');
}
/**
* Get the broker to be used during password reset.
*
* @return \Illuminate\Contracts\Auth\PasswordBroker
*/
public function broker()
{
return Password::broker('admins');
}
}问题是,我正在做多身份验证迷你项目,我的代码一切正确在用户端和管理员side...at用户端工作良好,重置密码通知工作良好,但当我去管理面板,点击忘记密码,它显示我的表单放电子邮件,我把电子邮件和发送重置链接,然后出现这个错误是什么问题,任何人都可以知道,将非常感谢。
发布于 2020-03-31 18:19:08
试试这个:
AdminForgotPasswordController.php
class AdminForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
protected function broker(){
return Password::broker('admins');
}
public function sendResetLinkEmail(Request $request){
$input = $request->all();
$rules = array(
'email' => "required",
);
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
$arr = array("status" => 400, "message" => $validator->errors()->first());
} else {
// check if user already exists
$users = Admins::all();
if(!$users->isEmpty()){
foreach($users as $user){
if($user->email == $request['email']){
break;
}
$user = false;
}
}else{
$user = false;
}
if(!$user){
$arr = array("status" => 400, "message" => "That user doesn't exist");
return \Response::json($arr);
}
// create reset pass token
$token = Password::getRepository()->create($user);
$user->notify(new SendResetPasswordAdmin($token,$user->email));
$arr = array("status" => 200, "message" => "Email to reset password sent");
return \Response::json($arr);
}
}
}并且您需要在应用程序/通知上创建通知,使用此命令php artisan make: SendResetPasswordAdmin SendResetPasswordAdmins
class SendResetPasswordAdmins extends Notification
{
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($token,$email)
{
$this->token = $token;
$this->email = $email;
}
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->line(Yourmessage)
->action('Message2', route('admins.password.reset', ['token' =>$this->token, 'email' => $this->email]))
->line(FooterMessage);
}路由:
Route::get('admins/password/reset/{token}/{email}',
'ResetPasswordAdmins@showResetForm')->name('admins.password.reset');还有这个:
class ResetPasswordAdmins extends Controller
{
public function showResetForm($token,$email){
return view(yourView)->with(['token' => $token, 'email'
=> $email]);
}
public function updatePass(Request $request){
//Here your logic and validator
}发布于 2020-04-01 10:43:11
我找到了解决方案..问题出在auth.php文件夹中,我使用的是provider而不是provider,所以出现了这个错误。只需检查config/auth.php并替换此代码。
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'admins'=>[
'provider'=>'admins',
'table'=>'password_resets',
'expire'=>60,
'throttle'=>60,
],
],https://stackoverflow.com/questions/60947038
复制相似问题