您的位置:首页 > 数据库 > Redis

基于cookie-redis实现单点登录

2017-11-08 23:00 387 查看
sso俗称单点登录: 分布式项目中要实现在一个项目中登录之后其他与之有关联的项目就不要在登录了这个过程就叫单点登录

实现单点登录的方式有很多种 我们选择的是基于cookie-redis方式实现的。此种实现方式是模拟cookie-jssesion。所以要想先明白cookie-redis还是先明白cookie-jsession吧

一session原理(存放在在服务器端,每次请求会重置时间)

当客户端发送一个请求的时候服务器端会判断是否有一个名为jsesion的cookie。

如果没有的话就会创建一个名为jsession的cookie。cookie的值为uuid,同时会创建一个uuid为key的session被创建出来。同时会把名为jsession的cookie返回到客户端

如果有的话么cookie有没有超时再次请求的时候就直接会将名为jsession的cookie返回到请求头中。

二cookie原理(存放在客户端,每次请求不会重置时间)

在服务器端实例化cookie对象只能存字符串。

设置cookie的有限时间以及作用域和有效路径

跟随响应对象响应给客户端

浏览器接收带cookie之后,会对其进行io操作存放到本地的某个文件夹中、

当用户再次发请求的时候 只要能获取某个或者某些cookie,浏览器就会自动发送到客户端

好了现在cookie-session理解之后我们来探讨一下sso中的cookie-redis吧

第一步

要想实现cookie-redis总得有个cookie吧,所以第一步要先创建一个cookie,然后cookie起个名字,(因为我们要判断浏览器端是否存在这个cookie所以说需要专门写一个js这个js 是前台写的,跟后续其他的需要登录的网页相关联,其他的网页要引入这个js,当判断cookie有了之后就会将这个js就会获取第一个js里面的cookie值,之后就可以从redis查询数据了)cookie的值为uuid,然后将这个uuid作为key存储到redis中他的值为用户信息,同时设置redis的失效时间。

第二步

每一个需要用户信息的页面都要有两个js上面提到的,第一个js要判断是否存在这个cookie,第二个js是先获取cookie里面的值然后发送一个jsonp请求,从redis里面获取,然后进行相应的展现。

总结redis-cookie就是对cookie-jsessin的模拟。实现sso主要用到的有 1.cookie 2. 第一个js获取名为指定值得cookie信息3 第二个js需要判断cookie是否存在以及将cookie的值给4.jsonp由jsonp发送请求判断是redis是否存在 5. spring里面专门提供了一个接口可以返回jsonp需要的 这个类交mappingjaskonvalue6.在redis里面查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: