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

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

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

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

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

先看看整个解决方案结构

可以看到,我们的项目有三个站点注册,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配置:

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

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

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

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

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

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

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

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

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

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

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

.NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录的更多相关文章

  1. .NET Core2.0+MVC 用session,cookie实现的sso单点登录

    博主刚接触.NET Core2.0,想做一个单点登录的demo,所以参考了一些资料,这里给上链接: 1.http://www.cnblogs.com/baibaomen/p/sso-sequence- ...

  2. NET Core 2.0使用Cookie认证实现SSO单点登录

    NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sa ...

  3. ASP.NET Core 2.0使用Cookie认证实现SSO单点登录

    之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NE ...

  4. Asp.Net Core基于Cookie实现同域单点登录(SSO)

    在同一个域名下有很多子系统 如:a.giant.com  b.giant.com   c.giant.com等 但是这些系统都是giant.com这个子域. 这样的情况就可以在不引用其它框架的情况下, ...

  5. 170810、spring+springmvc+Interceptor+jwt+redis实现sso单点登录

    在分布式环境中,如何支持PC.APP(ios.android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用 ...

  6. 简单使用redis实现sso单点登录

    前面几篇分享了nosql只mongodb,今天简单分享另一个nosql神兵redis. 主要模仿sso单点登录,将登录人信息写入redis.话不多说,直接上马,驾. /// <summary&g ...

  7. 前端分享之cookie的使用及单点登录

    cookie是什么 cookie的英文意思是饼干.在计算机术语中指服务端存放在客户端的一段数据.这段数据在客户端每次进行http请求时会自动加在http请求报文中的header上:服务端在响应时,可以 ...

  8. SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

    最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...

  9. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

随机推荐

  1. vue 2.0之基础

    Vue Vue实例 创建实例: var vm = new Vue({ //code }) 数据与方法: 只有当实例被创建时 data 中存在的属性才是响应式的; Vm.b = 'h1' 是不会触发视图 ...

  2. Hibernate学习笔记二

    Hibernate持久化类的编写规则 Hibernate是持久层的ORM映射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中. 持久化类 一个java类与数据库表建 ...

  3. Welcome to StackEdit!

    Welcome to StackEdit! Hey!our first Markdown document in StackEdit1. Don't delete me, I'm very helpf ...

  4. C语言--第二周作业

    ****学习内容总结**** 1.Git和编辑器截图 2.MOOC截图 3.阅读<提问的智慧>感想 读完<提问的智慧>之后,我认为在提问时,要根据以下步骤: 谨慎明确的描述症状 ...

  5. django搭建web (一)

    建立工程 django-admin.py startproject project_name 建立app python manage.py startapp app_name 将app添加进工程中 在 ...

  6. selenium 爬虫

    from selenium import webdriver import time driver = webdriver.PhantomJS(executable_path="D:/pha ...

  7. android context获取目录详解

    获取 sqlite系统数据库路径 方式1: ApkInfo apkInfo = new ResourceUtil(context).getApkInfo(); APP_PATH = new Strin ...

  8. Beta冲刺Day1

    项目进展 李明皇 今天解决的进度 点击首页list相应条目将信息传到详情页 明天安排 优化信息详情页布局 林翔 今天解决的进度 前后端连接成功 明天安排 开始微信前端+数据库写入 孙敏铭 今天解决的进 ...

  9. 部分和问题 nyoj

    部分和问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 给定整数a1.a2........an,判断是否可以从中选出若干数,使它们的和恰好为K.   输入 首先, ...

  10. EasyUI中Tabs添加远程数据的方法。

    tabs加载远程数据: $(function () { $("#btnquery").click(function () { if (!$("#tcontent" ...