基于Redis的单点登录
单点登录的使用流程
单点登录的概念:
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
为什么会存在单点登录的问题
session默认是存储在当前服务器的内存中,如果是集群,那么只有登录那台机器的内存中才有这个session
比如说我在A机器登录,B机器是没有这个session存在的,所以需要重新验证
如何解决单点登录问题
不管在那一台web服务器登录,都会把token值存放到我们的一个集中管理的redis服务器中
当客户端携带token验证的时候,会先从redis中获取,再去redis中查询是否有该用户信息存在,如此实现单点登陆
为什么要使用redis 来解决session 共享问题呢?
redis 是一个纯键值类型的NSQL数据库,所有的操作都是具有原子性的.
redis 可以设置key的生存时间,访问速度快速效率高.
缺点就是: 会对代码有一定的侵入性.需要自行编码实现!!!
单点登录的缺点及解决办法:
引进SSO单点登录的逻辑,它完美的解决了在多服务下的session共享问题,但是又会带来哪些问题呢?
在高并发下,很难保证生成的token的唯一性,并且有可能存在cookie存储的token信息,在redis 中查询不到,
于是在这种情况下就需要使用分布式锁,分布式锁有很多实现方式, 利用redis 中的setnx 和getset命令来实现redis 分布式锁!
SETNX命令简介
命令格式
SETNX key value
将 key 的值设为 value ,当且仅当 key 不存在。
若给定的 key 已经存在,则 SETNX 不做任何动作。
SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
返回值
设置成功,返回 1 。
设置失败,返回 0 。
使用单点登录的好处
- 方便用户
用户使用应用系统时,能够一次登录,多次使用。用户不再需要每次输入用户名称和用户密码,也不需要牢记多套用户名称和用户密码。单点登录平台能够改善用户使用应用系统的体验。 - 方便管理员
系统管理员只需要维护一套统一的用户账号,方便、简单。相比之下,系统管理员以前需要管理很多套的用户账号。每一个应用系统就有一套用户账号,不仅给管理上带来不方便,而且,也容易出现管理漏洞。 - 简化应用系统开发
开发新的应用系统时,可以直接使用单点登录平台的用户认证服务,简化开发流程。单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序。
现实举例
比如你写的一个tornado项目,分别部署到A,B两台机器上
如果直接使用session,那么如果在A机器登录,token只会在A服务器的内存
因为请求会封不到A,b连个机器,如果这个请求到了B机器,B的内存中没有就会让重新登录
所以登录A机器的时候我们应该把token值写入到redis中,A/B机器登录,都从redis中获取token进行校验
单点登录的原理:
基于Redis的单点登录相关推荐
- 基于.Net的单点登录(SSO)解决方案
基于.Net的单点登录(SSO)解决方案 前些天一位朋友要我帮忙做一单点登录,其实这个概念早已耳熟能详,但实际应用很少,难得最近轻闲,于是决定通过本文来详细描述一个SSO解决方案,希望对大家有所帮助. ...
- 【No.1】基于Cookie的单点登录(SSO)
2019独角兽企业重金招聘Python工程师标准>>> 这篇主要说明基于Cookie的单点登录实现,以及Cookie的一些特性以及使用说明. 1.Cookie是什么,如何工作的 在程 ...
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心...
基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...
- 基于Cookie的单点登录(SSO)系统介绍
基于Cookie的单点登录(SSO)系统介绍 SSO的概念: 单点登录SSO(Single Sign-On)是身份管理中的一部分.SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保 ...
- 基于SAML的单点登录介绍
一.背景知识: SAML即安全断言标记语言,英文全称是Security Assertion Markup Language.它是一个基于XML的标准,用于在不同的安全域(security domain ...
- Spring Cloud入门-Oauth2授权之基于JWT完成单点登录(Hoxton版本)
文章目录 Spring Cloud入门系列汇总 摘要 单点登录简介 创建oauth2-client模块 修改授权服务器配置 网页单点登录演示 调用接口单点登录演示 oauth2-client添加权限校 ...
- SpringBoot+Vue+Jpa+Redis实现单点登录(一处登录,另一处退出登录)
SpringBoot+Vue+Redis实现单点登录(一处登录,另一处退出登录) 一.需求 实现用户在浏览器登录后,跳转到其他页面,当用户在其它地方又登录时,前面用户登录的页面退出登录(列如qq挤号那 ...
- vue java实现登录_SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)
一.需求 实现用户在浏览器登录后,跳转到其他页面,当用户在其它地方又登录时,前面用户登录的页面退出登录(列如qq挤号那种方式) 二.实现思路 用户在前端填写用户信息登录后,后台接收数据先去数据库进行判 ...
- SSO单点登录-基于cookie的单点登录
1.概述 单点登录(Single-Sign-On),简称SSO,它的解释为:在多个应用系统中,只要登陆一次,便可以访问其它相互信任的系统.早期系统由于只有一个服务,因此只需要登录一次,就可以访问系统的 ...
最新文章
- 360金融首席科学家张家兴:我们如何做数据AI融合中台?
- c语言分支结构程序设计教学设计 赛课,《分支结构程序设计》教学设计.doc
- 华东师范大学2019年高等代数考研试题
- ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车黑线循迹实验 四驱
- AUTOSAR从入门到精通100讲(十三)-autosar架构中的ASPICE模块
- 混频通信的matlab仿真,基于MATLAB的扩频通信系统仿真研究—上海交通大学
- JSP、Servlet中get请求和post请求的区别总结
- 整数去重(信息学奥赛一本通-T1117)
- K8s与Docker
- 二叉树的宽度 java_Java语言描述二叉树的深度和宽度
- java实现人脸识别源码【含测试效果图】——前期准备工作及访问提示
- 怎么隐藏电脑桌面计算机,怎么隐藏电脑桌面软件
- 见证人人的衰落,讲一句活该
- 基于FPGA的数字混频器设计与仿真
- 微信小程序怎么添加到主屏幕将微信小程序放到手机桌面?
- SpringBoot、VUE基于国产环境适配开发(国产系统、国产数据库、国产中间件)
- logback日志pattern_Logback日志基础及自定义配置代码实例
- 打造你的专属印章(c语言)
- 区块链+跨境支付有哪些优势?
- 固体核磁常见问题解答
热门文章
- Java创建一个文件变量_java如何定义一个类,创建它的成员变量和方法?
- 成功解决Exception “unhandled AttributeError“ module ‘h5py‘ has no attribute ‘File‘
- Python函数封装:利用正则表达式compile、findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容
- WRF,WPS,WRF-Chem安装及编译步骤及bug总结(1)
- Agiliq署名的免费python书籍
- stm32f103zet6实现HTTP协议请求,UTF-8转码JSON打包上传
- 将js进行到底:node学习10
- Java assert
- BLE蓝牙hid键盘表
- c语言类型名占字节,在C语言中,不同类型数据所占字节数