私たちのプロジェクトはSpring + Spring Security + Maven + Hibernate + JSF + Icefacesです
currentUser の値を定義する必要がありますが、ユーザーがログインするまで定義できません。
public static UserDetails currentUserDetails(){
SecurityContext securityContext = SecurityContextHolder.getContext();
Authentication authentication = securityContext.getAuthentication();
if (authentication != null) {
Object principal = authentication.getPrincipal();
return (UserDetails) (principal instanceof UserDetails ? principal : null);
}
return null;
}
サーバーの起動時に定義を含めようとすると、(予想どおり) nullpointerException がスローされます。
私たちの現在の方法は、getter メソッドで遅延定義することです。したがって、JSF が呼び出すたびに HQL が実行されますが、これは非常にコストがかかります。
ユーザーがすでにログインした後に currentUserDetails メソッドを 1 回だけ実行する方法についてアドバイスをいただけますか?