如何在laravel 5.6中使用不同的表重置管理员密码?
我已经安装了fresh laravel,并复制了所有登录、注册和密码视图以及管理员登录的控制器,并创建了名为“admins”的表。当我尝试重置laravel默认用户的密码时,它可以工作,但对于“admins”用户,它不会更新密码。重置默认用户密码时,密码重置表也为空如何在laravel 5.6中使用不同的表重置管理员密码?,laravel,laravel-5.6,Laravel,Laravel 5.6,我已经安装了fresh laravel,并复制了所有登录、注册和密码视图以及管理员登录的控制器,并创建了名为“admins”的表。当我尝试重置laravel默认用户的密码时,它可以工作,但对于“admins”用户,它不会更新密码。重置默认用户密码时,密码重置表也为空 // providers in config/auth.php 'providers' => [ 'users' => [ 'driver' => 'eloquent',
// 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_表。如何实现此目的???您是否在应用程序\仪表板\管理员模型中添加了该表
protected $table = 'admins';
据我所知,您需要覆盖
Auth\ResetPasswordController.php
从文件的外观来看,我觉得这两个方法应该被覆盖
protected function guard()
{
return Auth::guard('owner');
}
public function broker()
{
return Password::broker('admin');
}
步骤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,
],
],
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
// Admin guards
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
'password_timeout' => 10800,
];
Setp 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);
}
/**
* 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]
);
}
Setp 3:
在ResetPasswordController.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);
}
/**
* 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]
);
}
Setp 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 }}">
修改密码
@csrf
Setp 5://现在打开email.blade.php和reset.blade.php内部视图/auth/passwords/并添加一个隐藏的输入字段,如下所示
<input type="hidden" name="user_type" value="{{ $user_type }}" required>
来源:重置管理员表的密码 Laravel包括
Auth\ForgotPasswordController
和Auth\ResetPasswordController
类,这些类包含电子邮件密码重置链接和重置用户密码所需的逻辑。可以使用laravel/ui
Composer包生成执行密码重置所需的所有路由:
运行以下命令:
php artisan make:notification ResetPasswordNotification
composer需要laravel/ui
php artisan ui vue--auth
和
从resources\views
复制auth
文件夹,并命名为admin
步骤1:自定义配置/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,
],
],
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
// Admin guards
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
'password_timeout' => 10800,
];
和
在App\Http\Controllers\Admin
文件夹中重置passwordcontroller.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
public function showLinkRequestForm()
{
return view('admin.passwords.email');
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ResetPasswordController extends Controller
{
use ResetsPasswords;
protected $redirectTo = 'admin/dashboard';
public function showResetForm(Request $request, $token = null)
{
return view('admin.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
Route::get('admin-login','Admin\LoginController@showLoginForm')->name('admin.login');
Route::post('admin-password/email','Admin\ForgotPasswordController@sendResetLinkEmail')->name('admin.password.email');
Route::get('admin-password/reset','Admin\ForgotPasswordController@showLinkRequestForm')->name('admin.password.request');
Route::post('admin-password/reset','Admin\ResetPasswordController@reset')->name('admin.password.update');
Route::get('admin-password/reset/{token}','Admin\ResetPasswordController@showResetForm')->name('admin.password.reset');
<form method="POST" action="{{ route('admin.password.email') }}">
<form method="POST" action="{{ route('admin.password.update') }}">
<form method="POST" action="{{ route('admin.login') }}">
Setp 4:routs
文件夹中的web.php路由文件
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
public function showLinkRequestForm()
{
return view('admin.passwords.email');
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ResetPasswordController extends Controller
{
use ResetsPasswords;
protected $redirectTo = 'admin/dashboard';
public function showResetForm(Request $request, $token = null)
{
return view('admin.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
Route::get('admin-login','Admin\LoginController@showLoginForm')->name('admin.login');
Route::post('admin-password/email','Admin\ForgotPasswordController@sendResetLinkEmail')->name('admin.password.email');
Route::get('admin-password/reset','Admin\ForgotPasswordController@showLinkRequestForm')->name('admin.password.request');
Route::post('admin-password/reset','Admin\ResetPasswordController@reset')->name('admin.password.update');
Route::get('admin-password/reset/{token}','Admin\ResetPasswordController@showResetForm')->name('admin.password.reset');
<form method="POST" action="{{ route('admin.password.email') }}">
<form method="POST" action="{{ route('admin.password.update') }}">
<form method="POST" action="{{ route('admin.login') }}">
Setp 5:resources\views\admin\passwords
文件夹中的email.blade.php文件
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
public function showLinkRequestForm()
{
return view('admin.passwords.email');
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ResetPasswordController extends Controller
{
use ResetsPasswords;
protected $redirectTo = 'admin/dashboard';
public function showResetForm(Request $request, $token = null)
{
return view('admin.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
Route::get('admin-login','Admin\LoginController@showLoginForm')->name('admin.login');
Route::post('admin-password/email','Admin\ForgotPasswordController@sendResetLinkEmail')->name('admin.password.email');
Route::get('admin-password/reset','Admin\ForgotPasswordController@showLinkRequestForm')->name('admin.password.request');
Route::post('admin-password/reset','Admin\ResetPasswordController@reset')->name('admin.password.update');
Route::get('admin-password/reset/{token}','Admin\ResetPasswordController@showResetForm')->name('admin.password.reset');
<form method="POST" action="{{ route('admin.password.email') }}">
<form method="POST" action="{{ route('admin.password.update') }}">
<form method="POST" action="{{ route('admin.login') }}">
resources\views\admin
文件夹中的和login.blade.php文件
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
public function showLinkRequestForm()
{
return view('admin.passwords.email');
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ResetPasswordController extends Controller
{
use ResetsPasswords;
protected $redirectTo = 'admin/dashboard';
public function showResetForm(Request $request, $token = null)
{
return view('admin.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
public function __construct()
{
$this->middleware('guest:admin');
}
public function broker()
{
return Password::broker('admins');
}
}
Route::get('admin-login','Admin\LoginController@showLoginForm')->name('admin.login');
Route::post('admin-password/email','Admin\ForgotPasswordController@sendResetLinkEmail')->name('admin.password.email');
Route::get('admin-password/reset','Admin\ForgotPasswordController@showLinkRequestForm')->name('admin.password.request');
Route::post('admin-password/reset','Admin\ResetPasswordController@reset')->name('admin.password.update');
Route::get('admin-password/reset/{token}','Admin\ResetPasswordController@showResetForm')->name('admin.password.reset');
<form method="POST" action="{{ route('admin.password.email') }}">
<form method="POST" action="{{ route('admin.password.update') }}">
<form method="POST" action="{{ route('admin.login') }}">
来源:很抱歉,我已经尝试过了,但没有成功。。还有其他想法吗这里有谁能回答这个问题。。