現在のユーザーをセッションに保存し、現在のユーザー(example:user.getRole.getRoleName())を使用すると、LIEを取得しました。どうすればこの問題を解決できますか、私のコードは次のようになります
コントローラ:
public String home(){
Users users = userService.getCurrentUser();
if(users.getRole().getRoleName().equals("admin")){ //causing LIE
....
}
UserService:
@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;
}
}
この問題を解決する他のより良い方法はありますか?ありがとうございました。