在maven里面我们已经把这个类引入进来了,然后接下来我们写一个类,这个类是什么呢,就是UserController,因为UserController里面已经用Redis的方式实现了,实现的还是Shard分布式的,这里面为了做一个扩展,我们项目还是会用自定义的单点登陆的方式,并且这种是分布式的,为了课程讲解,我们copy一个UserController,然后只保留三个,登陆登出,获取用户信息,这三个就是存session,删session,读session,因为我们很多判断权限的地方,是直接从session里面拿的,非常简单,这个就叫UserSpringSessionController,都是用servlet提供的一个session,我们来看session是如何被Spring Session包装的,体会对业务没有侵入的session框架,现在我们来配置这个Spring Session,从第一个方面,第一个是web.xml,增加一个filter节点,<!-- spring session框架和自己实现的redis二选一 --><filter><filter-name>springSessionRepositoryFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSessionRepositoryFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping>委托的过滤器代理,我们使用DelegatingFilterProxy
package com.learn.controller.portal;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.learn.common.Const;
import com.learn.common.ServerResponse;
import com.learn.pojo.User;
import com.learn.service.IUserService;/*** * @author Leon.Sun**/
@Controller
@RequestMapping("/user/springsession/")
public class UserSpringSessionController {@Autowiredprivate IUserService iUserService;/*** 用户登录* @param username* @param password* @param session* @return*/@RequestMapping(value = "login.do",method = RequestMethod.GET)@ResponseBodypublic ServerResponse<User> login(String username, String password, HttpSession session, HttpServletResponse httpServletResponse){//测试全局异常
//        int i = 0;
//        int j = 666/i;ServerResponse<User> response = iUserService.login(username,password);if(response.isSuccess()){session.setAttribute(Const.CURRENT_USER,response.getData());
//            CookieUtil.writeLoginToken(httpServletResponse,session.getId());
//            RedisShardedPoolUtil.setEx(session.getId(), JsonUtil.obj2String(response.getData()),Const.RedisCacheExtime.REDIS_SESSION_EXTIME);}return response;}@RequestMapping(value = "logout.do",method = RequestMethod.GET)@ResponseBodypublic ServerResponse<String> logout(HttpSession session,HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse){
//        String loginToken = CookieUtil.readLoginToken(httpServletRequest);
//        CookieUtil.delLoginToken(httpServletRequest,httpServletResponse);
//        RedisShardedPoolUtil.del(loginToken);session.removeAttribute(Const.CURRENT_USER);return ServerResponse.createBySuccess();}@RequestMapping(value = "get_user_info.do",method = RequestMethod.GET)@ResponseBodypublic ServerResponse<User> getUserInfo(HttpSession session,HttpServletRequest httpServletRequest){//        String loginToken = CookieUtil.readLoginToken(httpServletRequest);
//        if(StringUtils.isEmpty(loginToken)){
//            return ServerResponse.createByErrorMessage("用户未登录,无法获取当前用户的信息");
//        }
//        String userJsonStr = RedisShardedPoolUtil.get(loginToken);
//        User user = JsonUtil.string2Obj(userJsonStr,User.class);User user = (User)session.getAttribute(Const.CURRENT_USER);if(user != null){return ServerResponse.createBySuccess(user);}return ServerResponse.createByErrorMessage("用户未登录,无法获取当前用户的信息");}
}

Spring Session实战相关推荐

  1. Spring Session实战4

    然后来到Spring Session的配置文件,我们增加一个bean,id就是这个类defaultCookieSerializer,class就是org.springframework.session ...

  2. Spring Session实战3

    我们先把nginx的节点只配置一个tomcat,首先来到我们的命令行,修改我们的happymall.com.conf 现在负载均衡两个节点,我们把第二个节点先注释上 然后reload一下./nginx ...

  3. Spring Session实战2

    RedisHttpSessionConfiguration,就是这么一个类,那这个类里面很明显的可以看到,默认session有效期的时间是1800秒,也就是30分钟private Integer ma ...

  4. Spring Security 实战干货: RBAC权限控制概念的理解

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  5. Spring Security 实战:使用 JWT 认证访问接口

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 欢迎阅读Spring Security 实战 ...

  6. Spring Security 实战干货:实现自定义退出登录

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 上一篇对 Spring Security 所 ...

  7. Spring Session快速入门

    现在我们来学习一下Spring Session,这个Spring框架来实现,单点登陆,并且在实现的过程中,请小伙伴们思考一个问题,和我们原生实现的单点登陆有什么异同,我们要讲的一个目录,首先是讲解Sp ...

  8. 使用Spring Session和Redis解决分布式Session跨域共享问题

    大家可以关注一下公众号"Java架构师秘籍" 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载 ...

  9. Spring Security 实战:实现自定义退出登录

    1. 前言 上一篇对 Spring Security 所有内置的 Filter 进行了介绍.今天我们来实战如何安全退出应用程序. 2. 我们使用 Spring Security 登录后都做了什么 这个 ...

最新文章

  1. python画二维散点图-python3怎样画二维点图
  2. 注册DirectShow filter时应该注意中文路径
  3. Java Scanner 类
  4. 消息队列-ActiveMQ
  5. libmemcached安装报错
  6. 不定方程(质数与因数)
  7. Xcode7,ios9 issue ,warning合集
  8. 企业微信怎么删除好友 企业微信如何删除成员
  9. Office与Visio同事安装兼容问题
  10. Android中用OpenGL ES Tracer分析绘制过程
  11. psql执行sql的方式及一些基本命令
  12. 拦截器和过滤器的区别 -- 简单分析篇
  13. python easygui进度条_Python模块EasyGui专题学习
  14. 数据结构和算法——八种常用的排序算法----直接插入排序和希尔排序
  15. ELK logstash的grok 自带的正则匹配
  16. 使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题
  17. 关于flash强制更新:早上上班,多台电脑提示未安装flash
  18. 点云obb盒显示 python
  19. 正在找工作的同学看过来,zozo最新的java面试题总会,学会月薪3万起!!!
  20. 内网穿透软件对比——cpolar : 花生壳(中)

热门文章

  1. 你的 Docker 应用是安全的吗?
  2. hdu 4407 Sum
  3. Jenkins+Maven+SVN快速搭建持续集成环境(转)
  4. Android Studion有用的快捷键
  5. delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类
  6. 全面详细的jQuery常见开发技巧手册
  7. RuoYi 若依框架整改
  8. 移动多媒体呼叫中心在成都启用
  9. 《算法设计手册》面试题解答 第四章:排序和搜索
  10. 阿里云容器服务体验: 部署 ShellPays 条码支付整合服务平台 -- (四)结案陈词