上节我们完成了注册的后台逻辑,下面我们将完成登录的逻辑
说到登录我们就会用到session,spring-boot已经集成了redis保存session的方案。
依赖
<dependencies>
<!-- ... -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
</dependencies>
配置
#src/main/resources/application.properties
spring.session.store-type=redis # Session store type.
启用redis作为session存储
spring.redis.host=127.0.0.1
# Redis server port.
spring.redis.port=6379
配置redis数据源,这里最好是ip。使用域名可能会出问题
登录逻辑
@RequestMapping(path = "/user/handLogin", method = RequestMethod.POST)
public Response doLogin(HttpServletRequest request, HttpSession session) {
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
if (username == null || pwd == null) {
return new Response(ResponseRet.parametrErrror, "参数错误");
}
User ckUser = userMapper.findByUsername(username);
if (ckUser != null) {
String userPwd = ckUser.getPassword();
if (Security.verifyPassword(userPwd, pwd, this.salt)) {
UserInfo userInfo = new UserInfo();
userInfo.setUsername(ckUser.getUsername());
session.setAttribute("User", userInfo);
Map data = new HashMap();
data.put("jumpUrl", "/user/profile");
return new Response(0, "登录成功", data);
}
} else {
return new Response(602, "该用户未注册");
}
return new Response(601, "登录错误");
}
这里主要用了HttpSession对session进行操作。
其中, session.setAttribute("User", userInfo); userInfo必需实现Serializable,以便能序列化写入redis

通过查看redis 可以看到,session存到了一个hash key当中
总结
- 学会配置redis数据源
- 学会通过
HttpSession进行session读取 - 回顾了下jquery ajax,一直没写页面了
- 了解了下spring-boot-redis的存储
- 熟悉了下spring.io文档,官方文档内容很多,而且看起来有点乱,入口比较多。官方文档一定要熟悉,有问题一般官网找最靠谱。