phper学习springboot-les4-session登录

207 阅读1分钟

上节我们完成了注册的后台逻辑,下面我们将完成登录的逻辑

说到登录我们就会用到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当中

总结

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

参考

  1. 官方教程 https://docs.spring.io/spring-session/docs/2.3.0.RC1/reference/html5/guides/boot-redis.html