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');
}
}
问题是我正在制作multiauth miniproject,我在用户端和管理员端都编写了所有正确的代码...在用户端工作正常,重置密码通知工作正常,但是当我进入管理面板并单击“忘记密码”时,它会显示我填写电子邮件表格,我发送电子邮件并发送重置链接,然后出现此错误,这是任何人都知道的问题,将是感激的。
答案 0 :(得分:0)
尝试一下:
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:notification SendResetPasswordAdmins的此命令上的app / notifications上创建SendResetPasswordAdmin
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
}
答案 1 :(得分:0)
我找到了解决方案。问题出在auth.php文件夹中,我正在使用提供程序而不是提供程序,因此出现此错误。只需检查config / auth.php并替换此代码即可。
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'admins'=>[
'provider'=>'admins',
'table'=>'password_resets',
'expire'=>60,
'throttle'=>60,
],
],