Я не работал с предложенным решением, вот что я нашел:
(С помощью пружины 3.1).
В вашем классе фитлера:
CharsetFilter implements Filter {
@OVerride public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws IOException, ServletException {
HttpServletRequest hsr = (HttpServletRequest) request;
if (hsr.getUserPrincipal() == null) {
HttpSession session = hsr.getSession();
if (!(hsr == null)) {
logger.info("path : " + hsr.getPathInfo());
session.setAttribute("beforeLoginUrl", hsr.getPathInfo());
}
}
}
Тогда я объявлю ваш web.xml ваш фильтр:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter>
<filter-name>charsetFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>com.ent.foo.CharsetFilter</filter-class>
<init-param>
<param-name>requestEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
Затем в вашем URL перенаправления после успешного входа в систему просто получите HttpSession обратно:
@RequestMapping(value = "successful")
public void showSuccessfulogin (HttpSession session) {
String redirectUrl = (String) session.getAttribute("beforeLoginUrl");
if (redirectUrl != null) {
session.removeAttribute("beforeLoginUrl");
return "redirect:" + redirectUrl;
}
return "redirect:/";
}
Здесь у вас есть материал, чтобы заставить его работать, но вам придется проверить
hsr.getPathInfo()
и посмотрите, оканчивается ли он на .css или .js и т. Д. *
Также, если ошибка входа в систему, вы должны увидеть, если атрибут сеанса уже установлен, и увидеть другие особые случаи!
Кстати, мой фильтр раньше использовался для форматирования всего ввода / вывода в utf-8.
Надеюсь, это поможет любому.