我们已经开发了一个Kentico模块,我们希望在每个站点上进行许可。
是否还有其他人试图利用内置的Kentico Licensing来实现此目的?
我想到的是在我们的服务器上有一个安全的终端点,可以验证运行模块的Kentico站点的域/许可证。
E.g。如果我们的服务器中不存在域/许可证,则该模块将不会为该站点运行。
这可行吗?
答案 0 :(得分:4)
我想我可能已经想出了这个。
在我的模块上,我已经覆盖了CheckLicense方法:
public override bool CheckLicense(string domain, FeatureEnum feature, ObjectActionEnum action)
{
if (domain != null)
domain = LicenseKeyInfoProvider.ParseDomainName(domain);
int siteId = LicenseHelper.GetSiteIDbyDomain(domain);
var licenseKey = LicenseKeyInfoProvider.GetLicenseKeyInfo(domain, FeatureEnum.Unknown);
if (siteId > 0 && licenseKey != null)
{
// TODO: query external service with licenseKey.Domain for a valid license for this module
return true;
}
return false;
}
然后我可以使用:
ModuleManager.CheckModuleLicense("My.Module.Name", RequestContext.CurrentDomain, FeatureEnum.Unknown, ObjectActionEnum.Read)
关于确保模块获得适当许可的功能。
方法覆盖是一种简化,我已经对外部服务请求实施了缓存,以防止每次我们想要检查权限时都必须查询服务。
我还发送了licenseKey.Domain,因为我们不关心别名,只要主域获得许可,模块就可以在任何别名下工作。
这种方法看起来如何?非常感谢任何做过某种事情的人的任何反馈,以及选择解决方案的是什么?
谢谢, 第