利用 Kentico 的许可来许可自定义模块
Leverage Kentico's Licensing to license custom module
我们开发了一个 Kentico 模块,我们希望在每个站点的基础上获得许可。
有没有其他人尝试为此目的利用内置的 Kentico 许可?
我在想的是在我们的服务器上有一个安全端点,该端点将验证 Kentico 站点 运行 模块的 domain/license。
例如如果 domain/license 在我们的服务器中不存在,该模块将不会 运行 用于该站点。
这可行吗?
我想我可能已经弄明白了。
在我的模块中,我重写了 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 因为我们不关心别名,只要主域获得许可,模块就可以在任何别名下工作。
这种方法看起来如何?非常感谢任何做过此类事情的人的任何反馈,以及选择的解决方案是什么?
谢谢,
p.
我们开发了一个 Kentico 模块,我们希望在每个站点的基础上获得许可。
有没有其他人尝试为此目的利用内置的 Kentico 许可?
我在想的是在我们的服务器上有一个安全端点,该端点将验证 Kentico 站点 运行 模块的 domain/license。
例如如果 domain/license 在我们的服务器中不存在,该模块将不会 运行 用于该站点。
这可行吗?
我想我可能已经弄明白了。
在我的模块中,我重写了 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 因为我们不关心别名,只要主域获得许可,模块就可以在任何别名下工作。
这种方法看起来如何?非常感谢任何做过此类事情的人的任何反馈,以及选择的解决方案是什么?
谢谢, p.