我正在使用 Spring 安全性。假设我有一个User
属于 a 的Store
。有Store
一个属性来确定它是否有网上商店:
class Store {
...
boolean isOnline
...
}
class User {
...
def belongsTo = [ store: Store ]
...
}
Store
在每个页面上显示的全局导航栏模板中,如果当前登录的用户可以在线购物,我想显示一个链接。我目前在工具栏模板中使用此代码:
<g:set var="userId" value="${sec.loggedInUserInfo(field: 'id') as Long}"/>
<g:set var="user" value="${User.get(userId)}"/>
<g:if test="${user.store.isOnline}">
<li>
<g:link controller="store" action="redirect">Shop Online</g:link>
</li>
</g:if>
尽管此代码有效,但是否有更好的方法来处理此逻辑?我不特别喜欢我为每个页面渲染执行此代码,我特别不喜欢我User.get()
直接在视图中使用。
换句话说,是否有任何东西相当于springSecurityService.currentUser
允许我抓住实际User
对象并沿着它的关系移动的视图?