springboot+redis实现简单session共享

本文介绍如何在分布式系统中使用Redis存储用户Session信息,包括Session的创建、续命、清除及超时设置。通过Spring Boot和Spring Session实现跨服务器的Session共享,确保用户登录状态的一致性和持久化。

解决问题:分布式的系统,获取在某台机器上登录的用户session信息

实现session的redis存储,超时设置,session续命,session清除

引入redismaven依赖

<!-- spring session -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>

启动方法增加EnableRedisHttpSession注解

1、拦截器   确定捕捉用户的那些操作,续命session

2、登录时,写入session数据

3、登出时,清除session数据

public abstract class BaseAction {

    //用户权限session key
    private static final String USER_SESSION = "userinfo";

    HttpServletRequest request = null;
    HttpServletResponse response = null;
    HttpSession session = null;

    @ModelAttribute
    public void setReqAndRes(HttpServletRequest request, HttpServletResponse response) {
        this.request = request;
        this.response = response;
        this.session = request.getSession();
    }

    /**
     * 后台保存UserSession到用户的Session中,默认超时时间为1800s
     * 续命用户session
     */
    public void setUserSessionInfo(UserSession userSession) {
        session.setAttribute(USER_SESSION, userSession);
    }

    /**
     *获取用户的userSession数据
     */
    public UserSession getUserSessionInfo(){
        UserSession userSession = null;
        if (session != null) {
            userSession = (UserSession) session.getAttribute(USER_SESSION);
        }
        return userSession;
    }

    /**
     * 清除用户的Session中的UserSession
     *
     */
    public void clearUserSession() {
        session.setAttribute(USER_SESSION, null);
    }

    public HttpServletRequest getRequest() {
        return request;
    }

    public HttpServletResponse getResponse() {
        return response;
    }
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值