【发布时间】:2019-01-12 14:28:38
【问题描述】:
我使用 Laravel 5.6,我有 2 个身份验证器:
'user' => [
'driver' => 'session',
'provider' => 'users',
],
'member' => [
'driver' => 'session',
'provider' => 'members',
],
在我的模板中,我只是有一个小问题,例如我想使用@auth('user') 来加载正确的视图,但是当我使用@guest 时,'member' 被认为是客人,我解释:
在我的刀片中:
@auth('user')
// content for user logged
@endauth
@auth('member')
// content for member logged
@endauth
@guest
// content for guest only
// but this content is shown for members logged (in addition of the @auth('member') content
@endguest
我不知道为什么,当一个会员登录时,他会看到@guest 内容和@auth('member') 内容。我需要配置其他东西吗?我想要用户身份验证的相同行为。
** 编辑 **
好的,用这种丑陋的方式,它可以工作:
@guest('member')
@guest('user')
// only guest
@endguest
@endguest
【问题讨论】:
-
这是守卫的问题..您正在检查 2 个不同的守卫,但没有明确定义
guest将使用什么守卫。因此,guest调用“可能”没有使用您正在检查的任何防护,这意味着在此示例中您将始终拥有此部分。听起来目前默认的守卫没有登录用户。没有一般的经过身份验证的用户或访客,它总是与守卫有关......简而言之,你怎么知道guest检查使用的是什么守卫? -
那么,我可以为我的客人部分使用双重保护吗?或者我想如果访问者没有登录(作为成员或用户)使用条件会更简单
-
if ... elseif ... else你的条件检查是相互依赖的,不是独立的
标签: laravel