学习jpetstore的SignonInterceptor类

public class SignonInterceptor extends HandlerInterceptorAdapter {

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
UserSession userSession = (UserSession) WebUtils.getSessionAttribute(request, "userSession");
if (userSession == null) {
String url = request.getServletPath();
String query = request.getQueryString();
ModelAndView modelAndView = new ModelAndView("SignonForm");
if (query != null) {
modelAndView.addObject("signonForwardAction", url+"?"+query);
}
else {
modelAndView.addObject("signonForwardAction", url);
}
throw new ModelAndViewDefiningException(modelAndView);
}
else {
return true;
}
}

}
通过WebUtils.getSessionAttribute(request, "userSession");得到session中的用户信息,if (userSession == null)为空则取得用户的url和query一起转到SignonForm页面 短短的几行代码就解决了简单的安全访问问题 防止用户不通过登录访问安全性较高的页面 同时保存用户请求的url信息 以便登录后直接跳到用户需要访问的url

你可能感兴趣的:(Interceptor)