私はSpringブートとfreemarkerを使用してWebアプリケーションを作成し、インターセプタ(HandlerInterceptorAdapter)を実装しました。Springブートインターセプタを使用してリダイレクト
インターセプタの内部で、ユーザーがログに記録されていない場合、ログインページにリダイレクトされます。これは正常に動作します。しかし問題は、コントローラがログインページにリダイレクトされる前に最初に実行されていることです。
私のインターセプタコード:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
User userSession = (User) request.getSession().getAttribute("user");
if (userSession == null) {
response.sendRedirect("/login");
}
}
コントローラクラス(response.sendRedirect後、このコントローラはまだexcutedされています)。どうして?私はこの問題を積み重ねている。
@RequestMapping("/home")
public String home(Model model, HttpServletRequest httpServletRequest) {
String returnPage = "home-admin";
User user = (User) httpServletRequest.getSession().getAttribute("user");
if(user != null){
String accessType = accessTypeRepository.getAccessType(user.getAccessId());
if(StrUtil.isEqual(accessType, AccessTypeConst.MANAGER.getType())){
returnPage = "home-manager";
}
}
return returnPage;
}
Woahhに変更
!!私はこの問題を数時間スタックしており、解決策はこれほど簡単です。ありがとう、たくさんの男、あなたは私の一日を作った。 – kevenlolo
私はあなたの問題を解決してうれしいです。あなたは答えとしてこれを受け入れるでしょうか? –