首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在laravel 5.6中为不同表的管理员重置密码?

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

Stack Overflow用户
提问于 2019-01-22 11:10:50
回答 4查看 5.5K关注 0票数 3

我已经安装了全新的laravel,并复制了所有的登录,注册和密码视图和管理员登录的控制器,并创建了名为'admins‘的表。当我尝试重置laravel默认用户的密码时,它可以工作,但对于'admins‘用户,它不会更新密码。并且当默认用户密码被重置时,密码重置表也为空。

代码语言:javascript
运行
复制
// 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时,密码是重置。我如何才能做到这一点??

EN

回答 4

Stack Overflow用户

发布于 2020-09-02 17:09:42

第一步:更新config/auth.php中的auth.php //提供者

代码语言:javascript
运行
复制
'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中添加两个函数

代码语言:javascript
运行
复制
/**
 * 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中添加两个函数

代码语言:javascript
运行
复制
/**
 * 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,我要从其中重置密码。

代码语言:javascript
运行
复制
<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,并添加一个隐藏的输入字段,如下所示

代码语言:javascript
运行
复制
 <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

票数 1
EN

Stack Overflow用户

发布于 2019-01-22 11:33:48

您是否在App\Dashboard\Admin Model中添加了该表?

代码语言:javascript
运行
复制
protected $table = 'admins';
票数 0
EN

Stack Overflow用户

发布于 2019-05-08 21:43:18

据我所知,您需要在Auth\ResetPasswordController.php中重写一些方法

从文件的外观来看,我有一种感觉,那两个方法应该被覆盖。

代码语言:javascript
运行
复制
protected function guard()
    {
        return Auth::guard('owner');
    }


public function broker()
    {
        return Password::broker('admin');
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54300733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档