关注
70.如何实现单点登录,如何实现权限控制,用户密码泄露后如何保证安全性:单点登录的英文名叫做:Single Sign On(简称SSO),指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统。简而言之,多个系统,统一登陆。单点登录原理
sso需要一个独立的认证中心,所有子系统都通过认证中心的登录入口进行登录,登录时带上自己的地址,子系统只接受认证中心的授权,授权通过令牌(token)实现,sso认证中心验证用户的用户名密码正确,创建全局会话和token,token作为参数发送给各个子系统,子系统拿到token,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。
单点登录的实现方案,一般就包含:Cookies,Session同步,分布式Session,目前的大型网站都是采用分布式Session的方式。
1.基于Cookie+Redis的单点登录
最简单的单点登录实现方式,用cookie作为媒介存放用户凭证。 用户登录系统之后,会返回一个加密的cookie,当用户访问子应用的时候会带上这个cookie,授权以解密cookie并进行校验,校验通过后即可登录当前用户。
2.分布式session方式实现单点登录
流程运行:
(1) 用户第一次登录时,将会话信息(用户Id和用户信息),比如以用户Id为Key,写入分布式Session;
(2) 用户再次登录时,获取分布式Session,是否有会话信息,如果没有则调到登录页;
(3)建议使用Redis,因此它有持久化功能,方便分布式Session宕机后,可以从持久化存储中加载会话信息;
(4) 存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时;
结合Cache中间件,实现的分布式Session,可以很好的模拟Session会话。
3.使用token实现
1.在项目某个模块进行登录,登录之后,按照规则生成字符串,把登陆之后用户包含到生成字符串里面,把字符串返回(1)可以把字符串通过cookie返回(2)把字符串通过地址栏返回
2.再去访问项目其他模块,每次访问在地址栏带着生成的字符串,在访问模块里面获取地址字符串,根据字符串获取用户信息。如果可以获取到就能登录。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
12-09 00:19
清华大学 Java Yilena:项目写的太差了,而且这两个项目也很杂,agent方面我不太了解,但对于后端来说这两个项目竞争力感觉不如烂大街项目。
我觉得首要之急是解决你到底是想搞toc/tob还是agent
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 找工作能把i人逼成什么样 #
14684次浏览 174人参与
# 上班到公司第一件事做什么? #
109377次浏览 740人参与
# 你今年做了几份实习? #
9776次浏览 145人参与
# 工作两年想退休了 #
203426次浏览 1799人参与
# 你开始找寒假实习了吗? #
15898次浏览 210人参与
# 新凯来求职进展汇总 #
64127次浏览 171人参与
# 影石Insta360求职进展汇总 #
166505次浏览 1335人参与
# 大厂面试初体验 #
83631次浏览 385人参与
# 0经验如何找实习? #
27047次浏览 456人参与
# 面试尴尬现场 #
205404次浏览 821人参与
# 大学最后一个寒假,我想…… #
72261次浏览 726人参与
# 25届秋招公司红黑榜 #
306651次浏览 1252人参与
# 什么样的公司千万别去 #
28026次浏览 148人参与
# 大家每天通勤多久? #
64498次浏览 415人参与
# 金融财经春招备战日记 #
43896次浏览 216人参与
# 央国企投递记录 #
166052次浏览 1622人参与
# 你找工作经历过哪些骗局? #
9730次浏览 144人参与
# 机械人值得去的半导体企业 #
32983次浏览 183人参与
# 字节出了豆包coding模型 #
6874次浏览 61人参与
# 一起聊华为 #
168560次浏览 820人参与