无法在春季启动中检索会话数据



当我尝试在春季启动中检索会话数据时,它总是给我一个null值。会话属性数据以BLOB文件的形式存储在数据库中。您可以在下面的照片中看到会话属性表。

这是mysql数据库中SPRING__SESSION_ATTRIBUTE表的照片

这是我用来存储会话数据的代码

@PostMapping("/login")
public String login(@RequestBody LoginModel loginModel, HttpServletRequest request) {
List<String> messages = (List<String>)request.getSession().getAttribute("IS_LOGGED_IN");
if (messages == null) {
messages = new ArrayList<>();
request.getSession().setAttribute("IS_LOGGED_IN", messages);
}
messages.add("hellooooo");
request.getSession().setAttribute("IS_LOGGED_IN", messages);
}

这是我用来检索会话数据的代码。

@GetMapping("/check")
public void  process(HttpSession session) {
List<String> messages = (List<String>) session.getAttribute("IS_LOGGED_IN");
System.out.println(messages);
}

这是我在application.properties文件中使用的代码

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test2?autoReconnect=true&useSSL=false
spring.datasource.username = root
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.sql.init.mode=always
spring.h2.console.enabled=true
spring.session.store-type=jdbc
spring.session.jdbc.initialize-schema=always
spring.session.timeout.seconds=900
server.port=9092

这是mysql数据库中SPRING_SESSION表的照片

选项1-使用此HttpSession HttpSession作为参数来获取和设置属性。

其次,如果您使用的是Springboot+安全性,则可用于检查任何与登录相关的其他选项是通过

public String login(Principal principal) 

如果没有登录用户,它会给你null,并通过-为你提供登录id

principal.getName(); 

以及使用模型模型对象来传输数据。

model.addAttribute("data", data);

相关内容

  • 没有找到相关文章

最新更新