You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 01:42:36