4 grails
我试图在所有视图中为当前用户(POJO)设置一个变量,这样我就可以获得用户名之类的内容,并检查每个视图上的角色(包括默认布局).如何在grails中设置某些内容(例如currentUser),以便在每个grails视图中都可以访问它,如下所示:
<div>${currentUser.name}</div>
Run Code Online (Sandbox Code Playgroud)
或者像这样:
<g:if test="${currentUser.admin}">ADMIN</g:if>
Run Code Online (Sandbox Code Playgroud)
Ted*_*eid 11
您想使用grails过滤器.使用过滤器,您可以使用before/after和afterView方法指定要拦截的控制器和方法(使用通配符).
这样可以很容易地将新变量填充到模型中,以便在视图中可用.这是一个使用acegi插件authenticateService的示例:
class SecurityFilters {
def authenticateService
def filters = {
all(controller:'*', action:'*') {
after = { model ->
def principal = authenticateService.principal()
if (principal != null && principal != 'anonymousUser') {
model?.loggedInUser = principal?.domainClass
log.debug("SecurityFilter: adding current user to model = $model")
} else {
log.debug("SecurityFilter: anonymous user, model = $model")
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)