【发布时间】:2019-01-26 14:17:18
【问题描述】:
我有两个控制器。我正在尝试以一种方法将登录的用户放入会话中,然后以另一种方法获取它。但是会话不同,如何解决?
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/user/signIn", method = RequestMethod.POST)
public ResponseEntity<DataUser> signIn(@RequestBody @Valid SignInUser signInUser,
HttpSession session) {
User user = userService.getUser(signInUser.getEmail(), signInUser.getPassword());
session.setAttribute("user", user);
DataUser dataUser = new DataUser((User) session.getAttribute("user"));
return ResponseEntity.ok(dataUser);
}
}
@RestController
public class MessageController {
@Autowired
private MessageService messageService;
@RequestMapping(value = "/data/message", method = RequestMethod.POST)
public Message save(@RequestBody NewMessage newMessage,
HttpSession session) {
System.out.println(session.getAttribute("user"));
Message message = new Message(newMessage);
LocalDateTime dateTime = LocalDateTime.now();
message.setDateTime(dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
message.setNumberRating(0);
return messageService.save(message);
}
}
session.getAttribute("user") 为空
【问题讨论】:
-
如何向这些端点发送请求?您是否在会话开始时发回正在设置的 cookie?如果不是,服务器怎么知道请求都属于同一个会话?
-
我在 javascript 中使用 fetch 发送数据。我正在使用 Springboot。如果使用通常的 servlet 一切正常,并且在 Spring 中我能以某种方式理解另一个?
标签: java spring-mvc spring-boot httpsession