假设您有一个网站,其中包含许多不同的模块,例如:
如果一位客户没有相应的许可证,您如何限制访问其中一个“模块”?
我经常看到.lic
文件附带的组件,你如何生成其中一个?
如果你使用这样的方法会影响性能吗?
修改
我想到的另一件事是,如果您将所有模块与您的应用程序一起发送,并且您只想显示已获得许可的控件,是否需要检查每个控件的有效性,还是以某种方式提取该信息?
答案 0 :(得分:5)
您可以使用现有的一个开源解决方案来生成和验证许可证文件,包括有关允许的模块/功能的信息:
Boths工具允许您将其他数据存储到许可文件中 - >在你的情况下允许的模块。
使用Portable.Licensing解决方案,您可以使用产品功能或其他许可证数据来添加允许的模块:
var license = License.New()
//... other options
.WithProductFeatures(new Dictionary<string, string>
{
{"Accouting", "yes"},
{"Notes and Documents", "yes"}
})
// ... other options
.CreateAndSignWithPrivateKey(privateKey, passPhrase);
验证模块:
if (license.ProductFeatures.Contains("Accouting"))
// ...
免责声明:我是Portable.Licensing开源项目的作者
答案 1 :(得分:1)
这样做的一种方法是拥有一个位数组,其中每个标志对应一个特定的模块或特征。在生成许可证时,根据客户购买的模块设置位阵列,然后使用RSA等算法对该位阵列进行签名。然后,在您的软件中,验证签名并检索位数组以确定要激活的模块。
查看支持此情况的CryptoLicensing - 您可以在每个生成的许可证中指定最多2040个功能/模块。