gpt4 book ai didi

laravel - 如何在 laravel 5.6 中使用不同的表为管理员重置密码?

转载 作者:行者123 更新时间:2023-12-04 17:41:32 25 4
gpt4 key购买 nike

我已经安装了新的 laravel 并复制了所有登录、注册和密码 View 以及用于管理员登录的 Controller ,并创建了名为“admins”的表。当我尝试为 laravel 默认用户重置密码时,它可以工作,但对于“管理员”用户,它不会更新密码。重置默认用户密码时,密码重置表也为空。

// 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。我怎样才能做到这一点??

最佳答案

第 1 步: 更新 auth.php//config/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,
],
],

第 2 步:在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);
}

第 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 步://在 Blade 模板上发送用户类型//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 }}">

第 5 步://现在打开 views/auth/passwords/中的 email.blade.php 和 reset.blade.php 并像这样添加一个隐藏的输入字段

 <input type="hidden" name="user_type" value="{{ $user_type }}" required>

来源:https://medium.com/backenders-club/password-brokers-reset-passwords-on-multiple-tables-in-laravel-73068542925c

关于laravel - 如何在 laravel 5.6 中使用不同的表为管理员重置密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54300733/

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