我想在我的laravel项目中进行多次身份验证。
我在auth.php文件中创建了新的后卫“admin”,但我不知道如何在我的authcontroller中设置新创建的后卫。
它始终使用我的auth.php中的“默认值”设置:
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
答案 0 :(得分:10)
1)如果您希望在整个应用程序中使用新创建的admin
防护,您可以更改配置文件的默认值中的值。
2)如果只是 AuthController 在构建的Auth系统中使用Laravel,您可以在 AuthController.php 和 PasswordController.php :
protected $guard = 'admin';
参考 - 检查保护自定义 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
}
答案 1 :(得分:1)
Laravel 5.4+在任何Auth Controller中使用以下内容:
use Illuminate\Support\Facades\Auth;
protected function guard(){
return Auth::guard('guard-name');
}
答案 2 :(得分:-2)
您还必须在config\auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
admin是保护名称,提供者是TABLE-NAME