这里使用简单粗暴的方式,只为做个记录。

关键配置:

            services.AddDataProtection()
.SetApplicationName("appname")
.DisableAutomaticKeyGeneration()
.PersistKeysToFileSystem("keypath");

  注意:

appname:所有站点的ApplicationName值要保持一致

keypath:所有站点的密钥需要相同,这里指的是密钥存放的路径

做到以上两点一致,即可实现Cookie共享,当然,CookieName一样也是必须的。

DisableAutomaticKeyGeneration() 该方法表示不自动创建密钥,采用只读模式,然后指定密钥的路径。如果不使用该方法,系统在启动时会进行检测,如果没有便会自动创建,那么多站点下,每个站点都创建一个密钥,导致密钥不同,解密结果肯定不一样,那Cookie就无法跨站点,所以使用只读取模式,因此在启动和部署应该之前,要先生成密钥。至于如何生成密钥,此文中已提到,看你能否领悟 - -。

我们使用的大概原理就是:使用相同的密钥对Cookie进行加解密,任何一个站点当然能都能识别。

深入的学习,请看文章中给出的文献参考链接,比如修改加密方式,指定密钥时效等。

参考文献:https://docs.microsoft.com/zh-cn/aspnet/core/security/data-protection/configuration/overview

http://www.cnblogs.com/dudu/p/6495951.html

文章出处:http://www.cnblogs.com/anech/p/6873604.html

05-26 01:41