如何在laravel中为auth控制器设置新的防护

时间:2016-08-16 15:12:27

标签: php laravel laravel-5

我想在我的laravel项目中进行多次身份验证。

我在auth.php文件中创建了新的后卫“admin”,但我不知道如何在我的authcontroller中设置新创建的后卫。

它始终使用我的auth.php中的“默认值”设置:

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

3 个答案:

答案 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
}

参考 - https://laravel.com/docs/5.2/authentication

答案 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