前端如何实现单点登录
Posted weixin_50841302
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端如何实现单点登录相关的知识,希望对你有一定的参考价值。
单点登录是什么?你是怎么理解的?单点登录是如何实现的
普通登录
提到单点登录,首先可以想到传统登录,通过登录页面根据用户名查询用户信息,判断密码是否正确,正确则将用户信息写到session,访问的时候通过从session中获取用户信息,判断是否已登录,登录则允许访问。
普通登录的缺点
由于session不能共享,服务越来越多,并且还服务还搭建集群,导致每访问另外一个服务都需要重新登录。
单点登录
单点登录有个简称是sso,它是一个功能可以控制多个有联系的系统操作,简单地理解为通过单点登录可以让用户只需要登录一次软件或者系统,那么同系统下的平台都可以免去再次注册、验证、访问权限的麻烦程序,通俗易懂的理解为一次性登录也可以一次性下线,比如:淘宝,首先我们要知道淘宝和天猫是两个平台的,不属于一个平台,只是淘宝和天猫属于一个系统下的购物平台,因此,我们账号登录淘宝的时候,天猫自然也是跟着自动登录且全部访问,省去了再次去注册验证的方式去登陆天猫平台
单点登录的实现方式
token验证方式实现单点登录
在项目某个模块进行登录,登录之后,按照特定的规则生成字串,把登录之后用户包含到生成字符串里面,把字符串返回
(1)可以把字符串通过cookie返回
(2)把字符串通过地址栏返回
前端收到token之后将token存储在自己的请求头之中或者url后面,这样每次请求都可以带着token请求。
再去访问项目其他模块,获取地址栏或者请求头里面的token,根据宇符串获职用户信息。
同时为了设置失效时间,可以将token放在redis中,设置失效时间,判断过期。
前端单点登录的一个小实现
前段时间对接一个定制客户的需求,需要实现类似于单点登录的一个功能,需要对接不同的部门,我大概把他们分成,上游-中间层-我们,上游是我们公司的主打产品的一个CS系统,中间层就是中台网关,接下来就是我们这边,我们需要做的就是获取token然后来做 一个接口的调用,但是这其中的痛点就是问题定位跟你前端的触发时机。
痛点一,如何定位到问题,其中我们因为有网关配置这一部分主要是后端负责,但是是其他部门的后端然后这个沟通问题就比较复杂,所以我必须定位到问题才能去进一步沟通,所以我前端的思路就是在ESC中ping我的资源,尤其是前端静态资源能不能访问到,如果能访问到就能定位到问题是我们这边的问题,然后我确实也遇到了这个问题,网关配置错误问题,接着就是进一步推动问题的解决。
痛点二,是我前端的触发时机,我咨询过不少的前端他们给我的意见就是在beforeeach里面去走这个逻辑,但是这有一个潜在的问题就是一旦上游网关挂掉我这边就是无线的重定向的一个过程,所以我最后选择了卸载APP.VUE这个文件里面,然后成功之后清除网关带来的cookies,实现就不写了因为涉及到公司机密。
这里写自己的一个实现思路,主要是记录一下问题的沟通过程,跨部门沟通重点除了定位问题还有就是沟通方式跟方法,谁的生活都会有插曲,只求解题没有情绪
以上是关于前端如何实现单点登录的主要内容,如果未能解决你的问题,请参考以下文章