在Web应用程序上许可模块

时间:2010-11-29 09:26:05

标签: .net licensing

假设您有一个网站,其中包含许多不同的模块,例如:

  • 会计(处理客户,发票等)
  • 备注和文件(创建和管理您的文件)
  • 更多..

如果一位客户没有相应的许可证,您如何限制访问其中一个“模块”

我经常看到.lic文件附带的组件,你如何生成其中一个?

如果你使用这样的方法会影响性能吗?

修改

我想到的另一件事是,如果您将所有模块与您的应用程序一起发送,并且您只想显示已获得许可的控件,是否需要检查每个控件的有效性,还是以某种方式提取该信息?

2 个答案:

答案 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个功能/模块。