我通过在我的Laravel应用程序中将提供程序添加到我的auth.php文件中,创建了一个名为'business_user'的自定义防护。
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'business_users' => [
'driver' => 'eloquent',
'model' => App\BusinessUser::class,
],
],
在刀片模板中,我有一些自定义代码,这些代码根据登录的用户显示不同的内容。
@if (Auth::check('business_user'))
<a class="btn btn-light" href="{{ route('user.logout') }}">Logout Business</a>
@elseif(Auth::check())
<a class="btn btn-light" href="{{ route('user.logout') }}">Logout Customer</a>
@else
(Guest user)
@endif
无论我是以普通用户身份登录还是企业用户登录,刀片模板始终显示第一个条件(注销企业)。
我已经验证了正确的用户保护登录,因为我可以在laravel调试栏中检查会话变量名称,从而对此进行验证。
任何人都可以解释原因吗?
答案 0 :(得分:0)
check
方法不带参数。如果您想要guard
方法所针对的特定警卫:
Auth::guard('whateveryouwant')->check();
简而言之,您的if
条件和elseif
正在检查相同的值。当您直接在check
外观上调用Auth
时,Auth Manager将使用默认防护作为防护,并在其上调用该方法。 (默认防护措施可以在运行时更改; auth
中间件将设置默认防护措施)
此外,您正在显示的是用户提供程序,而不是所定义的防护。警卫将是提供者和驱动程序的组合。