Laravel会检查用户是否通过了身份验证,而不受保护

时间:2019-07-17 15:59:42

标签: laravel authentication

我的网站有多个保护措施,例如:

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

 'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],


    'recruiter' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
 ],

是否有一种方法可以检查用户是否简单登录(即经过身份验证),而不管是否有任何防护措施?

当前,我必须执行以下操作:

if (Auth::guard('web')->check() || 
    Auth::guard('recruiter')->check() || 
    Auth::guard('admin')->check()) {

}

2 个答案:

答案 0 :(得分:0)

我不认为只有一种方法可以对付所有守卫。您是否考虑过封装身份验证保护检查的中间件,以便至少在整个代码库中都不会使用检查?

答案 1 :(得分:0)

正如其他人所述,这不是Laravel提供的功能。您可能必须在用户国家/地区代码中为此功能创建一些内容。我已经创建了一些适合您特定用例的东西:

namespace Your\Namespace;

use Illuminate\Support\Facades\Auth;

class Guard
{
    public static function checkAny(...$guards)
    {
        foreach($guards as $guard) {
            if (Auth::guard($guard)->check()) {
                return true;
            }
        }

        return false;
    }
}

if (\Your\Namespace\Guard::checkAny('web', 'admin','recruiter')) {
    // don't show captcha
}