我有一个用于保存用户 session 的类,例如用户名,电话号码和域。出于所有目的和目的,它的基本外观如下:
public class User {
private String username;
private String domain;
private List<GrantedAuthority> authorities = new ArrayList<>();
public void addRole(final String role) {
authorities.add(new SimpleGrantedAuthority(role));
}
public List<GrantedAuthority> getAuthorities() {
return authorities;
}
}
我有一个从上下文中提取此用户并呈现其属性的类。这是这个类的样子:
class UserSession {
def getLoggedInUser() {
User user = SecurityContextHolder.getContext().getAuthentication().getPrincipal()
println("################### we are gonna return " + user)
return user.domain + "\\" + user.username
}
}
我遇到的问题是,我不知道如何从主布局gsp(基本模板)调用getLoggedInUser。
到目前为止,我已经尝试过执行以下操作:
<g:set var="userSession" bean="UserSession"/>
<span id="userInfo">${userSession.loggedInUser}</span>
但是,页面保留为空白,并且永远不会调用该方法。那么我的问题是:如何从基本布局gsp(而不是在每个 Controller 中)调用可以从特定bean /类访问的方法?
最佳答案
您是否尝试过使getLoggedInUser方法为静态方法?可能会起作用。
顺便说一句,不使用Spring Security吗?你可以做<sec:loggedInUserInfo field="username" />
关于grails - Grails 3调用外部方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37255239/