我需要使用 Portable.Licensing 保护 Asp.Net Web Api 2.2
应用程序.
我通过创建多个 Asp.Net Areas
来组织应用程序。
例如:
- 核心
- 会计
- 人力资源
- 库存
我需要为每个区域申请许可。如果客户购买了会计模块,那么只有他才能访问会计功能。否则我必须显示一条错误消息。
而且我还想生成一个不同的机器 key 来保护软件免受盗版。
那么我如何使用 Asp.Net Areas 的可移植许可呢? 许可证需要在何处/何时验证?
任何人都可以通过提供一些说明来帮助我实现我的要求吗? 非常感谢提供示例代码!
最佳答案
对于所有徘徊在同一件事上的人:
嗯,基本上,如何在您的应用程序中实现许可 - 这取决于!一如既往,没有 Elixir 。
我花了半天时间研究 Portable.Licensing,这就是我想到的: 在 Portable.Licensing 中,您在 fluent api 中有“WithProductFeatures”方法,用于将自定义数据添加到许可中,而您的区域就是它 - 产品功能。但是在哪里插入检查 - 取决于许多因素:
- 您对解决方案的性能有多关心?
- 您对刚刚破解 IL 的人有多关心?
如果您更关心性能,而不是人们很容易更改程序集并获得破解版本 - 您可以将许可证中的可用功能数据保存到某个缓存中并在以下位置访问它:
- WebApi Controller 的每个方法
- WebApi Controller 的基本 Controller (OnActionExecuting 是一个不错的选择)
- 在 WebApi 过滤器中(here 是一个很好的例子)
如果您考虑更加努力地保护您的代码 - 在这些地方传播许可证数据检查调用,并使用 Fody 添加它们(我只是计划实现它,所以没有代码示例 - 只是库引用 here)-不要让海盗的生活像改变 1 种方法的 IL 一样简单:)
关于c# - 使用 Portable.Licensing 许可 Asp.Net 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38823811/