博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单点登录(iwantmoon.com出品)
阅读量:4616 次
发布时间:2019-06-09

本文共 798 字,大约阅读时间需要 2 分钟。

早年便听到单点登录,一直因为感觉很简单,就没有动手去弄,正好现在公司有要求,那么OK,直接做了一个单机版的单点登录。

原理,可以参考。

Now,我们来看看我的实现吧。看下图

 

我们平时所做的登录,基本有两种做法:

1、Session,当我们将Passport存入Session的时候,我们可以方便的在Controller里面使用它,同时Session天生的过期策略,也很方便了我们。

2、Cookie,由于Session只能用于单机的环境,当Web Server需要集群的时候,我们就不得不考虑使用Cookie,当然虽然有一些会考虑Session共享,但这种方式并非主流。

Ok,普通的作法,并不能做到对单点的限制,那么当我们要做一个单点登录,在设计上我们需要考虑什么呢?

首先,对于网页来讲,我们不能做app可以在OS里写东西,那么只能在Cookie留下浏览器标识,也就是上图的BrowserID,它用于唯一标识一个浏览器。

然后,我们将Identity(UserId)也保存到cookie里面,现在在终端,我们的工作就算完成了。接下来我们考虑服务器端的设计。

如上图,我们需要维护一个Set,如上图:BrowserID userId loginTime,单点登录是需要考虑到过期的策略的,因为我们不再有Session的自动过期,那么就要考虑,我们是需要一个守护进程,来做这个事情,还是通过别的方式,我这里,通过在get中,直接排除的策略,减少了一个守护线程。也就是说,我在遍历的时候,如果遇到过期的项目,会自动remove掉这个项目。

 

讲到此,基本讲完了,由于本人不常写贴,水平有限,请大家见谅,同时大家有问题欢迎加群讨论:299388502,稍后我也会将代码开源到 github上面。

转载于:https://www.cnblogs.com/limingming/p/4503253.html

你可能感兴趣的文章
专门为码农定制的14款创意的T裇(T-Shirt)设计
查看>>
60佳优秀的 Photoshop 网页制作教程【上篇】
查看>>
正式进驻博客园
查看>>
TCP系列19—重传—9、thin stream下的重传
查看>>
【Android】webview javascript 注入方法
查看>>
Android SDK Tools Platform-tools Build-tools
查看>>
JavaWeb学习——初识JDBC
查看>>
JavaWeb学习——JavaBean与JSP
查看>>
js基础之事件
查看>>
jquery validation-jquery的验证框架 详解(2)
查看>>
leetcode 160 Intersection of Two Linked Lists
查看>>
Linux Array
查看>>
在Spring下集成ActiveMQ
查看>>
OTS parsing error: invalid version tag woff和ttf文件被Filter拦截
查看>>
使用Kazoo操作ZooKeeper服务治理
查看>>
linux系统安装配置exim4(源码安装)
查看>>
EF 两种删除方式的比较
查看>>
bzoj 2152: 聪聪可可
查看>>
推迟幸福感
查看>>
Java框架之spring 项目 附加之noteresult(status msg data uuid MD5)
查看>>