私はこれらの2つのクラスを私のプロジェクトに持っています。私が設定でそれらを使用すると、私はプロジェクトのログインフォームを提出することはできません。私は私の資格情報を記入し、ログインをクリックした後、私はアプリケーションをデバッグしようとし、フォームが投稿要求をするメトトに当たらないことを認識します。なぜ私は考えていないのですが、設定からインターセプタを削除するとログインに問題はありません。助けてください。Springインターセプタは動作しませんJAVA
SessionInterceptor.class
public class SessionInterceptor extends HandlerInterceptorAdapter {
@Autowired
private SessionManager sm;
@Autowired
private MessageSourceAccessor msa;
@SuppressWarnings("deprecation")
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String return_url = request.getRequestURL().toString() + "?" + request.getQueryString();
return_url = return_url.replace(msa.getMessage("config.baseurl"), "");
if (!request.getRequestURI().contains("login")) {
if (sm.get(request) == null) {
response.sendRedirect(
msa.getMessage("config.baseurl") + "/login?return=" + URLEncoder.encode(return_url));
return false;
}
}
return true;
}
}
SessionManager.class
@Component
public class SessionManager {
public static final String ProfileUser = "profileuser";
public UserModel get(HttpServletRequest request) {
HttpSession session = null;
session = request.getSession(false);
if (session == null)
return null;
return (UserModel) session.getAttribute(ProfileUser);
}
public void set(HttpServletRequest request, UserModel auth) {
HttpSession session = null;
session = request.getSession(false);
if (session == null)
return;
session.setAttribute(ProfileUser, auth);
}
public void remember(HttpServletRequest request) {
HttpSession session = null;
session = request.getSession(false);
if (session != null)
session.invalidate();
session.setMaxInactiveInterval(60 * 60 * 60);
}
public void init(HttpServletRequest request, UserModel auth, Boolean remember) {
HttpSession session = null;
session = request.getSession(false);
if (session != null)
session.invalidate();
session = request.getSession(true);
if (remember)
session.setMaxInactiveInterval(60 * 60 * 60 * 60);
else
session.setMaxInactiveInterval(1800);
session.setAttribute(ProfileUser, auth);
}
public void destroy(HttpServletRequest request) {
HttpSession session = null;
session = request.getSession(false);
if (session == null)
return;
session.removeAttribute(ProfileUser);
session.invalidate();
}
インターセプタで何を達成しようとしていますか? – iamiddy
私はそのようにすることにしました。他の選択肢は何ですか? – cool
なぜインターセプタが必要ですか? – iamiddy