我有一个名为'usermanager'的会话作用域托管bean。我想在usermanager bean的属性中存储新登录的用户信息,并使用下面的静态metod访问它。我想问这些问题,提前谢谢,抱歉英语不好。
如果我通过jsf injection mechanizm得到它,则管理1-a托管bean。那就是如果我使用新的UserManager()创建一个实例,这将不是托管bean。我是对的吗?
2 - 在下面的代码中usermanager在什么条件下可以为null。
3 - 在java中处理用户,组权限的最有效方法是什么。为此,我使用Spring,Seam。
4 - 我应该使用setParamater(key,Object)将此用户信息存储在Httpsession中,还是继续将其存储在会话bean中。
public static User getUserOfCurrentSession(){
UserManager userManager = (UserManager) ((HttpServletRequest)FacesContext.getCurrentInstance()
.getExternalContext().getRequest()).getSession(true)
.getAttribute("userManager");
if(userManager!=null){
return userManager.getUser();
}
FacesContext c = FacesContext.getCurrentInstance();
HttpServletRequest r = (HttpServletRequest) c.getExternalContext()
.getRequest();
HttpSession s = r.getSession(false);
if(s!=null)
s.invalidate();
try{
FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml");
FacesContext.getCurrentInstance().responseComplete();
return null;
}catch(IOException e){
e.printStackTrace();
}
throw new RuntimeException("Un authonticated user action");
}
答案 0 :(得分:1)
userManager
的会话属性(或bean)。但是你最好通过注射来获得这个实例。