SpringSession实现Springboot+Redis会话同步

1 .什么是 Session

Session 是 用于保持状态的基于Web 服务器 的方法。 Session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象。 存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览Web应用程序时需要的其它信息。

2.SpringSession实现会话同步

Spring Session 提供了一个 API 和实现,用于管理用户的会话信息,同时使其在不依赖于特定于应用程

序容器的解决方案的情况下,可以轻松地支持集群会话。

它还提供了透明的集成:HttpSession 允许以中立的方式替换应用程序容器(即 Tomcat)中的HttpSession,并支持在 Headers 中提供会话 ID 以与 RESTful API 一起使用。

WebSocket 能够在接收 WebSocket 消息时使HttpSession保持活动状态

WebSession 允许以与应用程序容器无关的方式替换 Spring WebFlux 的WebSession。

3.导入依赖包

4.配置application.yml文件

5.创建RedisConfig文件

@Configuration
public class RedisConfig {

    @Bean("springSessionDefaultRedisSerializer")
    public RedisSerializer<Object> redisSerializer(){
        return new GenericFastJsonRedisSerializer();
    }
}

6.创建实体类文件

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User implements Serializable {
    private Integer id;
    private String username;
    private String password;
}

7.创建Service文件

@Service
public class UserService {
    public User getUser(String username,String password){
        User user = new User();
        user.setId(1);
        user.setUsername("root");
        user.setPassword("1234");
        return user;
    }
}

8.创建Controller访问

@RestController
@RequestMapping("/user")
public class UserController {

    private final Logger log = LoggerFactory.getLogger(this.getClass());

    @Resource
    private UserService userService;

    @PostMapping("/login")
    public String login(String username, String password, HttpSession session) {
        User user = userService.getUserByUsernameAndPassword(username, password);
        String userJson = JSONObject.toJSONString(user);
        session.setAttribute("user", userJson);
        log.info("sessionId: {}, user: {}", session.getId(), userJson);
        return JSONObject.toJSONString(user);
    }

    @GetMapping("/session")
    public String getData(HttpSession session) {
        Object user = session.getAttribute("user");
        String userJson = JSONObject.toJSONString(user);
        log.info("sessionId: {}, user: {}", session.getId(), userJson);
        return userJson;
    }
}

9.使用api分别访问两个方法

10.可以正常读取用户Session值,并且Redis数据同步。

到这里会话同步就已经成功了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security 是一个强大的安全框架,提供了一系列企业级安全特性,比如身份认证、授权、加密、会话管理等,可用于保护基于 Spring 的应用程序。Spring Boot 是一种快速构建基于 Spring 的应用程序的方式,通过简化配置和开箱即用的特性,可以快速构建出高效、便捷的应用。Redis 是一个高性能、高可扩展的开源 NoSQL 数据库,可以用来提高应用程序的效率和可靠性。Vue 是一个流行的 JavaScript 前端框架,可以用来构建现代化的 Web 应用程序。 将这些技术集成到同一个应用程序中,可以提供更高效、安全和可靠的企业级解决方案。在此过程中,Spring Boot 可以作为后端架构,提供业务逻辑和数据存储,而 Vue 可以作为前端架构,构建用户界面和视觉效果。Redis 可以作为数据缓存和消息队列,提高应用程序的性能和可靠性。而 Spring Security 可以确保安全性和可靠性。 在实现上述真实案例时,可以利用 Redis 存储用户会话信息,从而实现基于用户的身份验证和授权。同时,Spring Boot 可以使用多种安全机制,包括基于用户的身份验证、基于角色的授权、防止 CSRF、跨域请求等,确保应用程序的安全性和可靠性。 为了更好地理解这些技术的使用,您还可以查看相关源代码示例,了解如何使用 Spring Security 和 Redis 实现基于会话的身份验证机制,以及如何使用 Vue 构建现代化的用户界面。通过深入了解这些技术,您将能够更快地构建出安全、高效、可靠的应用程序,提高自己职业生涯的竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值