本文是我个人在开发web-security 安全框架中使用的方案。
在Web Server集群环境中需要实现 session 共享,一个很好的方法就是将 session 数据存放至 Redis 中。我打算在自己的安全框架中集成此功能,只需要几行配置就能自动让你的 web 项目集成 redis session 共享功能。
实现思路为:
将 Servlet 容器的HttpSession实现替换成自己的实现, 如RedisHttpSession。这样当在Controlelr中调用session.setAttr()此类方法时就可以执行自己的代码。我们编写一个Filter, 在调用chain.doFilter(req, resp)时,将HttpServletRequest对象替换成我们自定义的SecurityServletRequestWrapper对象,并重写getSession()和getSession(boolean)方法,让其返回我们自己的session对象,这样就完成了对session的完全控制 。
替换 Servlet 容器的 HttpSession 实现
首选需要编写SecurityServletRequestWrapper类:
public class SecurityServletRequestWrapper extends HttpServletRequestWrapper {
private static Logger log = LoggerFactory.getLogger(SecurityServletRequestWrapper.class);

最低0.47元/天 解锁文章
1456





