欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

程序员文章站 2022-04-08 15:41:02
.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录 ......

 

之前发布过使用session+cookie实现的单点登录,博主个人用的很不舒服,为什么呢,博主自己测试的时候,通过修改host的方法,在本机发布了三个站点,但是,经过测试,发现,三个站点使用的session会互相干扰,导致测试失败,最后通过部署到外网才得以解决。

那么,我就想,能不能找个东西来代替session呢,于是我就想到了Redis/Memory缓存的方式,大家都知道,关于Redis,一个部署了Redis的服务器,默认在Redis中有16个数据库,索引是0~15,那么,能不能用三个站点连接不同的数据库,保证读写分离,互不干扰呢

,开始尝试一下,首先,Redis需要下载并部署到本机,注册到服务上,这个如果不会的,可以看一下Redis安装

对于redis/memory还不了解的朋友,也可以看看我另一篇博客:.NET Core2.0+MVC的Redis/Memory

然后,我们就可以开始写代码了

先看看整个解决方案结构

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

可以看到,我们的项目有三个站点注册,SSO_Server是用来统一登录注销的,System1,System2自然就是我们的两个网页应用

那么,这边封装了一个redis,memory的类库,想了解的可以在文章后面给的链接下载整个资源

其实,相较于session实现,只是多了这个类库,并把写入,读取session的操作换成写入读取redis/memory缓存的数据

所以这里就不在多说,我们来看看三个站点的部署

既然要在本机运行,那么首先修改host,这个文件的位置是在C:\Windows\System32\drivers\etc

直接用记事本打开,在末尾添加几行:

127.0.0.1 sysone.dddl.com
127.0.0.1 systwo.dddl.com
127.0.0.1 sso.dddl.com

然后看看我们的IIS配置:

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

这边需要右键添加绑定,绑定我们host中添加的域名

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

这里用sso认证中心来演示,需要注意的是,.net core2.0,需要在部署网站后,在应用程序池中将.NET CLR版本改为无托管代码:

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

然后,我们就可以运行了,首先,打开我们的sysone.dddl.com

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

可以看到,我们被跳转到了sso认证中心,并带上了sysone的链接,然后我们登录:

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

这边可以看到,我们登录成功并跳转回了sysone站点,返回了token以及用户信息。

然后,我们可以打开systwo站点:

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

可以看到,我们没有登录,但经由sso认证中心的判断,我们已经登录过,无需登录,我们来测试注销:

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

可以看到,我们已经注销成功,然后我们再次打开sysone站点:

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

那么,sso单点登录,注销,就完成了,这里可以下载我们的资源:


.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

如果您有什么好的建议,请联系我,在评论中留言,那么,感谢您的阅读,再见