CAS的统一登录接口目的:1. 登录后创建用户的全局会话                 ->  uniqueToken2. 创建用户全局门票,用以表示在CAS端是否登录  ->  userTicket3. 创建用户的临时票据,用于回跳回传          ->  tmpTicket
// 2. 实现用户的redis会话
String uniqueToken = UUID.randomUUID().toString().trim();
UsersVO usersVO = new UsersVO();
BeanUtils.copyProperties(userResult, usersVO);
usersVO.setUserUniqueToken(uniqueToken);
redisOperator.set(REDIS_USER_TOKEN + ":" + userResult.getId(),JsonUtils.objectToJson(usersVO));// 3. 生成ticket门票,全局门票,代表用户在CAS端登录过
String userTicket = UUID.randomUUID().toString().trim();// 3.1 用户全局门票需要放入CAS端的cookie中
setCookie(COOKIE_USER_TICKET, userTicket, response);// 4. userTicket关联用户id,并且放入到redis中,代表这个用户有门票了,可以在各个景区游玩
redisOperator.set(REDIS_USER_TICKET + ":" + userTicket, userResult.getId());// 5. 生成临时票据,回跳到调用端网站,是由CAS端所签发的一个一次性的临时ticket
String tmpTicket = createTmpTicket();/*** userTicket: 用于表示用户在CAS端的一个登录状态:已经登录* tmpTicket: 用于颁发给用户进行一次性的验证的票据,有时效性*//*** 举例:*      我们去动物园玩耍,大门口买了一张统一的门票,这个就是CAS系统的全局门票和用户全局会话。*      动物园里有一些小的景点,需要凭你的门票去领取一次性的票据,有了这张票据以后就能去一些小的景点游玩了。*      这样的一个个的小景点其实就是我们这里所对应的一个个的站点。*      当我们使用完毕这张临时票据以后,就需要销毁。*/
/*** 创建临时票据* @return*/
private String createTmpTicket() {String tmpTicket = UUID.randomUUID().toString().trim();try {redisOperator.set(REDIS_TMP_TICKET + ":" + tmpTicket,MD5Utils.getMD5Str(tmpTicket), 600);} catch (Exception e) {e.printStackTrace();}return tmpTicket;
}
private void setCookie(String key,String val,HttpServletResponse response) {Cookie cookie = new Cookie(key, val);cookie.setDomain("sso.com");cookie.setPath("/");response.addCookie(cookie);
}
public static final String REDIS_USER_TOKEN = "redis_user_token";
public static final String REDIS_USER_TICKET = "redis_user_ticket";
public static final String REDIS_TMP_TICKET = "redis_tmp_ticket";public static final String COOKIE_USER_TICKET = "cookie_user_ticket";

CAS单点登录 - 创建用户会话、全局门票、临时票据相关推荐

  1. CAS单点登录-单用户登录(十九)

    CAS单点登录-单用户登录(十九) 简介 所谓"单用户单账户登录"是指:在同一系统中,一个用户名不能在两个地方同时登录. 如: 当某账号在 A 处登录后,在未退出的情况下,如果再到 ...

  2. CAS单点登录 - 用户登录与校验

    /*** CAS的统一登录接口* 目的:* 1. 登录后创建用户的全局会话 -> uniqueToken* 2. 创建用户全局门票,用以表示在CAS端是否登录 -> userTicket* ...

  3. CAS单点登录系统的实现

    CAS单点登录系统的实现 前言 一.CAS思路 二.代码实现 环境准备 代码实现 2.1 MTV系统前端判断是否登录,依据前端cookie是否存在用户信息 2.2 MTV系统前端判断链接是否携带临时票 ...

  4. 爆破专栏丨Spring Security系列教程之实现CAS单点登录上篇-概述

    作者:千锋一一哥 前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案.开源项目,但 ...

  5. 大厂架构演进实战之手写 CAS 单点登录

    什么是单点登录 单点登录在大型网站里使用得非常频繁,那么什么是单点登录?一句话解释:一处登录,处处登录. 比如,淘宝和天猫都属于阿里旗下,账号也是通用的,一个账号即可以登录淘宝,又可以登录天猫,这样也 ...

  6. CAS单点登录(五)——Service配置及管理

    在上一节我们讲述了CAS中关于自定义认证登录策略,对CAS中关于自定义登录配置的方案,校验策略有了一定的了解,如果忘记了可以去复习一下------CAS单点登录(四)--自定义认证登录策略.这节本来该 ...

  7. java培训爆破专栏之Spring Security系列教程之实现CAS单点登录上篇-概述

    作者:千锋一一哥 前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案.开源项目,但 ...

  8. CAS单点登录(十一)——单点退出

    在前面我们讲解了CAS的单点登录客户端接入,对于CAS的登录有了更清楚的了解,今天我们讲解一下在CAS中的单点退出问题. 首先我们要明白单点退出(单点注销)与注销的区别: 其实官方文档也给我们详细的解 ...

  9. CAS单点登录的实现(二)

    这篇文章对CAS单点登录具体实现的一些步骤就行讲述,至于CAS单点登录的实现原理分析,请参看下面这篇文章: CAS单点登录原理分析(一) https://blog.csdn.net/qq_412582 ...

最新文章

  1. templateref html内容,angular之ng-template模板加载
  2. ai为什么要栅格化_英语学习为什么不能“碎片化”?要想学好英语,系统化是关键...
  3. 开发提交审核流程_小游戏上线发布全流程详解?
  4. Netflix如何节省92%视频编码成本?
  5. 2017年AR大会上海站干货分享
  6. android 音频控件,android AudioManager音频控件
  7. CALayer学习--contentsCenter属性
  8. Zigbee协议栈————广播组网
  9. 高中信息技术学业水平考试真题知识点
  10. RPLIDAR A2 Windows 下开发
  11. python装在c盘、怎么换到d盘_怎么把安装在c盘的东西移到d盘_如何把c盘的应用程序移到d盘...
  12. 机器视觉——镜头介绍
  13. Vuforia Vumark初探
  14. Fractional step and sor multigrid conjugate gradient method
  15. 一个实验了解什么是ISIS
  16. 平台建设的7大问题:蚂蚁AI平台实践深度总结
  17. 计算机专业论文在线教育,在线教育系统 计算机毕业论文.doc
  18. echarts 路径图
  19. Arduino基础之十一 74HC595的使用------控制1位数码管
  20. 工业网关需要具备的能力及分类

热门文章

  1. 【持续更新】JAVA面向对象多线程编程的一些tips
  2. 0xC00000FD: Stack overflow (parameters: 0x00000000, 0x003E2000).错误
  3. AOP的MethodBeforeAdvice
  4. 【大话Hibernate】Hibernate两种实体关系映射详解
  5. 并发编程之Synchronized
  6. server2008r2/2012R2遠程桌面-企业协议号
  7. 记账本开发进程第四天
  8. Java实现目的选层电梯的调度
  9. WebRTC 及点对点网络通信机制
  10. 为何说国内云桌面已经步入成熟期