假设在 Spring Mvc 的 Web 应用程序中,我们是否需要检查每个控制器或 jsps 中的有效会话?我该如何解决 MVC 中的会话管理问题?我们基本上做什么?
还有哪些其他事情可以为我的应用程序增加额外的安全性?
我们通常会在过滤层检查session是否过期,并将其映射到DispatcherServlet
,这样,所有将由 spring 处理的传入请求将首先被过滤,因此如果会话已经过期,则不允许与 spring 控制器进行任何交互。如果发现会话已过期,则发送重定向到一个页面,在该页面中用户将被告知其会话已过期。
过滤器代码示例
public class MyFilter implements Filter{
...
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (isSessionExpired((HttpServletRequest) theRequest)) {
response.sendRedirect(((HttpServletRequest) theRequest).getContextPath() + "/expired.jsp");
response.flushBuffer();
}else{
//..its not yet expired, continue
theChain.doFilter(theRequest, theResp);
}
}
...
}
映射到DispatcherServlet
在 web.xml 中
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.mycompany.ourproject.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<servlet-name>springdispatcher</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>springdispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)