【问题标题】:how to set new guard for auth controller in laravel如何在 laravel 中为 auth 控制器设置新的守卫
【发布时间】:2016-08-16 15:12:26
【问题描述】:

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

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

它总是使用我的 auth.php 中的“默认”设置:

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

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    1) 如果您希望在整个应用程序中使用新创建的admin 保护,您可以更改配置文件的 defaults 中的值。


    2) 如果只是AuthController使用Laravel内置的Auth系统,可以在AuthController.phpPasswordController.php中加入这一行

    protected $guard = 'admin';
    

    Ref - 检查 Guard 自定义 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

    【讨论】:

      【解决方案2】:

      Laravel 5.4+ 在任何 Auth Controller 中使用以下内容:

      use Illuminate\Support\Facades\Auth;
      
      protected function guard(){
         return Auth::guard('guard-name');
      }
      

      【讨论】:

      • LoginController、RegisterController 和 ResetPasswordController
      【解决方案3】:

      您还必须在config\auth.php 中注册警卫

      'guards' => [
          'web' => [
              'driver' => 'session',
              'provider' => 'users',
          ],
      
          'api' => [
              'driver' => 'token',
              'provider' => 'users',
          ],
      
           'admin' => [
              'driver' => 'session',
              'provider' => 'admins',
          ],
      ],
      

      admin 是守卫名称,provider 是 TABLE-NAME

      【讨论】:

      • 正如问题中所说,OP已经这样做了。问题是每条路由都使用'defaults'中定义的守卫
      猜你喜欢
      • 2018-09-27
      • 2018-09-23
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2021-03-22
      • 2016-07-30
      • 2023-03-15
      • 2019-09-30
      相关资源
      最近更新 更多