我想在我的laravel项目中进行多重身份验证。
我在auth.php文件中创建了新的守卫"admin",但我不知道如何在我的authcontroller中设置新创建的守卫。
它总是使用我的auth.php中的"defaults"设置:
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
1)如果您希望在整个应用程序中使用新创建的admin
保护,您可以更改配置文件defaults中的值。
2)如果只是关于AuthController使用了Laravel内置的Auth系统,你可以在AuthController.php和PasswordController.php: 中添加这一行
protected $guard = 'admin';
Ref - Check Guard custom here
3)如果您希望为任何与Auth相关的任务指定除默认守卫之外的守卫,您可以像这样手动指定它:
// For route middleware
Route::get('profile', [
'middleware' => 'auth:admin',
'uses' => 'ProfileController@show'
]);
// For manually logging the user in
if (Auth::guard('admin')->attempt($credentials)) {
// Authenticated...
}
// To login specific user using eloquent model
Auth::guard('admin')->login($user);
// For getting logged in user
Auth::guard('admin')->user();
// To check if user is logged in
if (Auth::guard('admin')->check()) {
// Logged in
}
Ref - https://laravel.com/docs/5.2/authentication
Laravel 5.4+在任何Auth控制器中使用以下内容:
use IlluminateSupportFacadesAuth;
protected function guard(){
return Auth::guard('guard-name');
}
您还必须在configauth.php
中注册守卫
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
admin是守护名,provider是TABLE-NAME