ASP.NET Core 2.0 多应用实现Cookie共享
前言
.NET Core 2.0 发布之后,在Authentication中间件部分,相关API有不少改动(官方文档),本文主要讲的就是实现应用Cookie共享,对Cookie中间件使用不了解的可以去查看官方文档,希望本文对大家有一些帮助。
ASP.NET Core 2.0 数据保护(Data Protection)
在一些需要负载场景,需要Cookie共享,需要对Cookie进行加密和解密操作,那么我们需要实现一些方法来对Data Protection进行分布式配置,本文主要介绍使用IXmlRepository接口。
IXmlRepository接口主要提供了持久化以及检索XML的方法,它只要提供了两个API:
//检索所有存在的加密的xml文件
IReadOnlyCollection<XElement> GetAllElements();
//存储data protection xml
void StoreElement(XElement element, string friendlyName);
IXmlRepository自定义实现
备注:我这里只是简单实现读取应用根目录的Key文件,大家可以自定义存储到DB或者Redis中。
public class XmlRepository:IXmlRepository
{
private readonly string _KeyContentPath = ""; public XmlRepository()
{
_KeyContentPath = Path.Combine(Directory.GetCurrentDirectory(),"ShareKeys", "key.xml");
} public IReadOnlyCollection<XElement> GetAllElements()
{
//加载key信息
var elements = new List<XElement>() { XElement.Load(_KeyContentPath) };
return elements;
} public void StoreElement(XElement element, string friendlyName)
{
//本文忽略实现存储功能,因为我们只需要读取已存在的Key即可
}
}
注意:每个应用站点下的Key文件存放位置和内容必须一致,本文的Key放在了应用根目录下面的“ShareKeys”文件夹中,文件为key.xml
ASP.NET Core 2.0 实现Cookie共享
Cookie共享又分为应用部署在同一机器和应用部署在不同机器或Docker
应用部署在同一机器上
这种部署实现Cookie共享是比较简单的,只需设置每个应用中Data Protection中间件PersistKeys的方式相同即可,推荐使用PersistKeysToFileSystem
services.AddDataProtection()
.SetApplicationName("cookieshare")
//windows、Linux、macOS 下可以使用此种方式 保存到文件系统
.PersistKeysToFileSystem(new System.IO.DirectoryInfo("C:\\share_keys"));
应用部署在同不同机器上或Docker中
这种部署实现Cookie共享需要借助上面我们实现的XmlRepository来进行设置,具体方式如下。
services.AddDataProtection()
.SetApplicationName("cookieshare")
.AddKeyManagementOptions(options =>
{
//配置自定义XmlRepository
options.XmlRepository = new XmlRepository();
});
Make .NET Great Again
ASP.NET CORE 2.0 API虽然有一些改动,就整体而言我觉得是越来越好了,总有一些东西需要改变,我们需要去适应,并努力完善整个社区环境,而不是抱怨。如果大家觉得有用,请点一个赞,您的认可是我最大的动力。
示例源码:https://github.com/myloveCc/CookieShare
参考文档
http://www.cnblogs.com/savorboard/p/dotnetcore-data-protected-farm.html
http://www.cnblogs.com/dudu/p/6495951.html
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?tabs=aspnetcore1x
ASP.NET Core 2.0 多应用实现Cookie共享的更多相关文章
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布
众所周知,Red Hat和微软正在努力使.NET Core成为Red Hat企业版Linux (RHEL)系统上的一流开发平台选项.这个团队已经一起工作好几个月了,RHEL对.NET有许多需求.今天在 ...
- ASP.NET Core 1.0 开发记录
官方资料: https://github.com/dotnet/core https://docs.microsoft.com/en-us/aspnet/core https://docs.micro ...
- ASP.NET 5 RC1 升级 ASP.NET Core 1.0 RC2 记录
升级文档: Migrating from DNX to .NET Core Migrating from ASP.NET 5 RC1 to ASP.NET Core 1.0 RC2 Migrating ...
- ASP.NET 5 改名 ASP.NET Core 1.0
今天,Scott Hanselman在其博客上宣布<ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0>, ...
- ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)
Bipin Joshi (http://www.binaryintellect.net/articles/f1cee257-378a-42c1-9f2f-075a3aed1d98.aspx) Uplo ...
- 坎坷路:ASP.NET Core 1.0 Identity 身份验证(中集)
上一篇:<坎坷路:ASP.NET 5 Identity 身份验证(上集)> ASP.NET Core 1.0 什么鬼?它是 ASP.NET vNext,也是 ASP.NET 5,以后也可能 ...
- vs2015 已经支持开发asp .net core 1.0 rc2 程序了
vs2015 已经支持开发asp .net core 1.0 rc2 程序了 http://mp.weixin.qq.com/s?__biz=MzI0MzM1ODczOQ==&mid=2247 ...
- [转]Writing Custom Middleware in ASP.NET Core 1.0
本文转自:https://www.exceptionnotfound.net/writing-custom-middleware-in-asp-net-core-1-0/ One of the new ...
随机推荐
- mac os 卸载android studio 从新安装遇到的一些问题
http://blog.csdn.net/elonspace/article/details/51800949 google中国论坛 http://www.android-studio.org lin ...
- 03 编写URL规则
3-1 URL编写规则 # 在每个App中设置独立的静态资源和模板文件并添加一个空白内容的urls.py文件. # 当程序收到用户请求的时候,首先在根目录的urls.py查找该URL属于哪个APP,然 ...
- springboot+websocket示例
1.新建maven工程 工程结构如下: 完整的pom.xml如下: <?xml version="1.0" encoding="UTF-8"?> & ...
- XMind使用教程
使用XMind,可以轻松创建.管理及控制思维导图.1. 启动XMind,选择一个空白模板或模板创建:2. 单击中心主题,输入文字即可对中心主题重命名:3. 使用键盘Enter键创建主要/同级主题,使用 ...
- SSH三大框架的工作原理
Hibernate工作原理 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的< ...
- 2-具体学习Github---init add commit log diff
1.安装: 首先找到git的官网,内部有下载链接. 也可以用下面的,我的是win7的64位系统: 可以在此处下载:Git-2.13.0-64-bit.exe链接:http://pan.baidu.co ...
- BZOJ 4765 普通计算姬 (分块 + BIT)
4765: 普通计算姬 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 1547 Solved: 329[Submit][Status][Discus ...
- OOP中的六种关系以及和JDK或框架中源码进行匹配对应
前言:这六种关系里:泛化=实现>组合>聚合>关联>依赖:其中组合-聚合-关联这三个如果只是给出一段代码是无法判断具体是什么关系的,需要配合语义或说业务场景来能进行区分(和设计模 ...
- ubuntu设置IP地址、网关的方法
打开terminal(用Ctrl+Alt+T打开) 1. 输入ifconfig 打印如下: enp1s0 Link encap:Ethernet HWaddr 6c:4b:90:0b:53: ...
- 查看Redis集群主从对应关系工具
工具的作用: 1)比"cluster nodes"更为直观的显示结果 2)指出落在同一个IP上的master 3)指出落在同一个IP上的master和slave对 运行效果图: 源 ...