我已经安装了全新的laravel,并复制了所有的登录,注册和密码视图和管理员登录的控制器,并创建了名为'admins‘的表。当我尝试重置laravel默认用户的密码时,它可以工作,但对于'admins‘用户,它不会更新密码。并且当默认用户密码被重置时,密码重置表也为空。
// providers in config/auth.php
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Dashboard\Admin::class,
],
],
// passwords reset in config/auth.php
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'admin_password_resets',
'expire' => 60,
],
],
//Also added broker and guard in ResetPasswordController.php
public function broker()
{
return Password::broker('admins');
}
protected function guard()
{
return Auth::guard('admin');
}
所有我想要的是更新管理员密码,并填写了users_reset_table时,密码是重置。我如何才能做到这一点??
发布于 2020-09-02 17:09:42
第一步:更新config/auth.php中的auth.php //提供者
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
]
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\models\Admin::class,
]
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
SETP2:在ForgotPasswordController.php中添加两个函数
/**
* Get the broker to be used during password reset.
*
* @return PasswordBroker
*/
protected function broker()
{
return Password::broker('admins');
}
/**
* Display the form to request a password reset link.
*
* @return \Illuminate\View\View
*/
public function showLinkRequestForm()
{
return view('auth.passwords.email')->with('user_type', request()->user_type);
}
Setp 3:在ResetPasswordController.php中添加两个函数
/**
* Get the broker to be used during password reset.
*
* @return PasswordBroker
*/
protected function broker()
{
return Password::broker('admins');
}
/**
* Display the password reset view for the given token.
*
* If no token is present, display the link request form.
*
* @param \Illuminate\Http\Request $request
* @param string|null $token
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function showResetForm(Request $request, $token = null)
{
return view('auth.passwords.reset')->with(
['token' => $token, 'email' => $request->email, 'user_type' => $request->user_type]
);
}
设置4: //发送刀片模板上的用户类型//admin-show.blade.php,我要从其中重置密码。
<button class="btn btn-primary btn-sm" onclick="event.preventDefault();
document.getElementById('change-password-form').submit();">
<span class="fa-passwd-reset">
<i class="fa fa-lock"></i>
</span> </i> Change Password
</button>
<form id="change-password-form" method="POST"
action="{{ route('password.email', ['user_type' => 'admin']) }}">
@csrf
<input type="hidden" name="email" value="{{ $admin->email }}">
Setp 5: //现在在视图/auth/passwords/中打开email.blade.php和reset.blade.php,并添加一个隐藏的输入字段,如下所示
<input type="hidden" name="user_type" value="{{ $user_type }}" required>
发布于 2019-01-22 11:33:48
您是否在App\Dashboard\Admin Model中添加了该表?
protected $table = 'admins';
发布于 2019-05-08 21:43:18
据我所知,您需要在Auth\ResetPasswordController.php
中重写一些方法
从文件的外观来看,我有一种感觉,那两个方法应该被覆盖。
protected function guard()
{
return Auth::guard('owner');
}
public function broker()
{
return Password::broker('admin');
}
https://stackoverflow.com/questions/54300733
复制相似问题