我将当前用户保存在会话中,当我使用当前用户(例如:user.getRole.getRoleName())时,我得到了 LIE。我该如何解决这个问题,我的代码是这样的
控制器:
public String home(){
Users users = userService.getCurrentUser();
if(users.getRole().getRoleName().equals("admin")){ //causing LIE
....
}
用户服务:
@Override
public Users getCurrentUser(){
session = ActionContext.getContext().getSession();
return (Users) session.get("user");
}
但是,当我将 userService.getCurrentUser() 更改为这样时,错误得到解决,但我认为这不是正确的方式,因为每次我使用当前用户时都需要连接到数据库。
@Override
public Users getCurrentUser(){
session = ActionContext.getContext().getSession();
return daoManager.getDetailUser(((Users) session.get("user")).getUsername());
}
DaoManager.getDetailUser 是这样的
@Override
public Users getDetailUser(String username) {
try {
Users user = (Users)sessionFactory.getCurrentSession().createQuery("SELECT U FROM Users U WHERE U.username=:USERNAME")
.setParameter("USERNAME", username)
.uniqueResult();
return user;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
有没有其他更好的方法来解决这个问题?谢谢你。