如何在Go Buffalo框架的模板中判断访客是否已登录?
在Go Buffalo模板中判断访客登录状态的内置方法
Buffalo 提供了两种直接的内置方式来在模板中判断访客是否登录:
1. 使用 current_user 变量
当你通过 Buffalo 自带的认证生成工具(buffalo generate auth)搭建认证系统后,框架会自动在请求上下文中注入当前登录用户,模板里可直接通过 current_user 变量判断:
<%= if current_user %> <div>欢迎回来,<%= current_user.Username %>!</div> <% else %> <a href="/login">请登录</a> <% end %>
如果你的用户模型不是默认的 User(比如自定义为 Member),变量名会自动变为 current_member,以此类推。
2. 使用 authenticated() 辅助函数
Buffalo 还内置了 authenticated() 函数,无需传参就能直接返回布尔值,判断当前请求是否已认证:
<%= if authenticated() %> <nav> <a href="/profile">个人中心</a> <a href="/logout">退出登录</a> </nav> <% else %> <nav> <a href="/login">登录</a> <a href="/signup">注册</a> </nav> <% end %>
自定义认证场景的注意事项
如果是自己实现的认证逻辑,需要在认证中间件中手动将用户信息存入请求上下文,比如:
c.Set("current_user", loggedInUser)
这样模板中就能正常访问 current_user 变量进行判断。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

