Laravel中@guest('admin')与@guest指令有什么区别?
Laravel Blade 中 @guest 与 @guest('admin') 的功能差异
两者都是Blade模板提供的游客状态判断指令,核心区别是身份校验使用的认证守卫(Guard)不同,具体差异如下:
无参数的 @guest
- 不传入守卫参数时,会默认读取
config/auth.php中配置的默认认证守卫做校验,绝大多数Laravel项目的默认守卫是web(对应普通前台用户认证体系) - 仅当默认守卫对应的用户身份处于未登录的游客状态时,指令包裹的模板内容才会被渲染输出
- 用法示例:
@guest // 该区域内容仅在默认守卫对应身份未登录时显示 @endguest
带参数的 @guest('admin')
- 传入
'admin'参数时,会明确指定使用名为admin的自定义认证守卫做身份校验,校验逻辑和默认守卫的登录状态完全独立、互不影响 - 仅当
admin守卫对应的身份(通常是后台管理员)处于未登录的游客状态时,指令包裹的模板内容才会被渲染。举个实际场景:哪怕当前访问者已经登录了普通前台用户账号,只要管理员账号没登录,该指令包裹的内容依然会正常显示 - 用法示例:
@guest('admin') // 该区域内容仅在admin守卫对应身份未登录时显示 @endguest
实际开发提示:如果项目做了多端独立认证(比如前台普通用户、后台管理员分表独立登录),对应页面做游客判断时一定要传对应的守卫参数,不然很容易出现“前台已经登录,后台登录页直接判定为已登录跳转”这类逻辑bug。
内容的提问来源于stack exchange,提问作者devope
相关产品推荐
相关产品推荐

