2020-10-31

纸壳CMS分布式部署集群解决方案

纸壳CMS只需要简单的设置就可以支持集群分布式部署。实现原理是通过将DataProtection的密钥保存到统一的地方进行共享访问,这样就能在不同的机器进行相同的加密,解密操作,从而保持登录状态。

启用集群插件

纸壳CMS的集群插件默认是不启用的,在集群部署之前应先启用。找到集群插件ZKEACMS.Distribution目录(开发环境:src/ZKEACMS.Distribution,生产环境:wwwroot/Plugins/ZKEACMS.Distribution)用记事本打开插件描述文件zkea.plugin,将Enable改为true即可。

{ ID:"2995ECF6-E2C0-4DAD-97CB-D980EE75390B", Name:"ZKEACMS.Distribution", FileName:"ZKEACMS.Distribution.dll", Enable:"true"}

  

实现原理

纸壳CMS只需要简单的设置就可以支持集群分布式部署。实现原理是通过将DataProtection的密钥保存到统一的地方进行共享访问,这样就能在不同的机器进行相同的加密,解密操作,从而保持登录状态。

纸壳CMS的用户登录使用的是cookie认证,默认情况下,对同一台服务器是有效的,但对别的服务器是无效的,因为加密的Key不一样。所以集群部署的时候,DataProtection是必须要设置的,放在一个统一的地方管理。纸壳CMS启用集群功能后,会将Key保存到数据库PersistKey表中,从而保证所有结点都可以访问相同的Key。有关于了解更多DataProtection请参阅微软官方文档。

Microsoft doc:

  • https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/introduction
  • https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-storage-providers

限制与扩展

因为纸壳CMS是将Key保存到数据库中,因此要求所有结点都要访问相同的数据库,如果系统需要做分库处理,可以将Key保存到外部数据库中,如Redis。

只需要重新实现一个IPersistKeyService即可,该接口很简单,负责Key的存取:

namespace ZKEACMS.Distribution.Service{ public interface IPersistKeyService {  List<PersistKey> GetPersistKeys();  void Save(PersistKey persistKey); }}

 

插件源代码:https://github.com/SeriaWei/ZKEACMS/tree/develop/src/ZKEACMS.Distribution

原文链接

原文转载:http://www.shaoqun.com/a/485845.html

焦点科技:https://www.ikjzd.com/w/1831

淘粉吧返利:https://www.ikjzd.com/w/1725

dmm杂志:https://www.ikjzd.com/w/2026


纸壳CMS只需要简单的设置就可以支持集群分布式部署。实现原理是通过将DataProtection的密钥保存到统一的地方进行共享访问,这样就能在不同的机器进行相同的加密,解密操作,从而保持登录状态。启用集群插件纸壳CMS的集群插件默认是不启用的,在集群部署之前应先启用。找到集群插件ZKEACMS.Distribution目录(开发环境:src/ZKEACMS.Distribution,生产环境:ww
西农:https://www.ikjzd.com/w/1368
百思买:https://www.ikjzd.com/w/394
运营策略:在亚马逊运营中有哪些问题会阻碍我们:https://www.ikjzd.com/home/19410
菲律宾(宿雾)游记 - :http://tour.shaoqun.com/a/10006.html
青海湖骑行线路推荐 :http://tour.shaoqun.com/a/17845.html

No comments:

Post a Comment