我有一个包含用户会话的课程,例如用户名,电话号码和域名。出于所有意图和目的,这就是它的基础:
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调用方法,而不是在每个控制器中,可以从特定的bean /类访问?
答案 0 :(得分:1)
您是否尝试将getLoggedInUser方法设为静态?可能它会起作用。
是的,不使用弹簧安全吗?你可以<sec:loggedInUserInfo field="username" />