php - 在 Laravel Controller 中检查多个守卫

标签 php laravel authentication laravel-5 guard

我在 laravel 中创建了三种类型的守卫,我可以检查 auth 用户,但是我们有一些对所有用户都相同的路由和 Controller ,我需要检查相同路由中的所有守卫或为登录的每种类型的用户检查 Controller 中。

我的 auth.php 文件看起来像这样

<?php
return [
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
        'student' => [
            'driver' => 'session',
            'provider' => 'students',
        ],
        'finance' => [
            'driver' => 'session',
            'provider' => 'finances',
        ],

        'admin-api' => [
            'driver' => 'token',
            'provider' => 'admins',
        ],
        'finance-api' => [
            'driver' => 'token',
            'provider' => 'finances',
        ],
    ],
    'providers' => [
        'students' => [
            'driver' => 'eloquent',
            'model' => App\student::class,
        ],
        'finances' => [
            'driver' => 'eloquent',
            'model' => App\Finance::class,
        ],
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\users::class,
        ],
        'finance' => [
            'driver' => 'eloquent',
            'model' => App\users::class,
        ],
        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],
    'passwords' => [
        'students' => [
            'provider' => 'students',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'finances' => [
            'provider' => 'finances',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'admins' => [
            'provider' => 'admins',
            'table' => 'password_resets',
            'expire' => 15,
        ],
        'finance' => [
            'provider' => 'finance',
            'table' => 'password_resets',
            'expire' => 15,
        ],
    ],
];

如何检查同一 Controller 或路由中的多个守卫?

最佳答案

对于每个你想认证的 Controller

public function __construct()
    {
        $this->middleware('auth:admin,student,finance');
    }

或 你可以在 route 使用

Route::group(['middleware' => 'auth:admin,finance,student'], function () {
    any same route here
});

你可以像这样访问 blade 中的用户详细信息

{{ Auth::guard('admin')->user()->name }} {{ Auth::guard('admin')->user()->last_name }}

我希望这对某些人有帮助。

关于php - 在 Laravel Controller 中检查多个守卫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49871765/

相关文章:

Laravel 5 : Getting error while creating laravel project in ubuntu

php - Laravel Eloquent 多表

php - `--database` 在 laravel 的 "Artisan::call"方法中不起作用

PHP如何删除/替换未知的问号菱形字符

php - 在后台执行 Laravel/Symfony/Artisan 命令

javascript - 如何在 Google Apps 脚本中进行 NTLM 身份验证?

java - 将jhipster后端和前端分离成两个项目?

php - AJAX登录无需重新加载页面

PHP - mysqli::prepare 返回 false

运算符的 PHP 优先级