0

是否有任何东西已经构建为库/nuget 包等,可在任何 ASP.Net/MVC 应用程序中提供功能管理?我所说的功能类似于模块:数据输入模块、简单报告模块、高级报告模块、预测。如果用户购买了基本许可证,他/她只能访问 - 数据输入模块和简单报告模块。如果用户购买了专业许可证,他/她可以访问 - 数据输入模块和简单报告模块和高级报告模块。如果用户购买企业许可证,他/她可以访问所有 - 数据输入模块、简单报告模块、高级报告模块、预测。

我所指的概念类似于角色管理概念,但并不完全相同 - 用户如何访问某个角色以及角色如何访问页面/操作方法。

在开发相当多的应用程序时,我遇到了这种情况 - 用户应该被允许访问一个部分,不仅因为他们具有特定的角色,而且他们已经购买了应用程序中的某个功能。注意:这并不能归结为简单地为用户分配相应的角色,因为很多角色都可以访问应用程序中的特定功能。

此外,我认为一个功能是有时间限制的 - 有一个开始日期和一个结束日期(结束日期基于用户为某项功能付费的时间段),这与 ASP.Net Membership 提供程序中的角色实现或simplemembership 提供者,其中没有角色的日期概念。


更新:我想说的是,“功能”决定了您在应用程序中可以访问的模块数量,“角色”决定了您可以访问的模块中的多少。

构建自定义解决方案是一种替代方案,还是有任何现成的(免费或付费)可用的?只是不想重新发明轮子!

提前感谢您查看我的问题。


感谢您的回复。

我的想法更多是在框架中构建如此多的东西,以便您可以一对一地绘制角色的工作方式: User.IsInRole("Admin") ==> Account.HasModule("Banking")与 web.config 中配置的授权信息类似,我应该能够编写:

<allow modules="Banking,Finanace"/>
4

1 回答 1

0

我不认为asp.net security/membership 中内置了任何此类功能,但这很容易开发,您不必购买。因为这更多的是关于您的功能/模块有多少是独立的(松散耦合)。

我认为这种架构将为您提供基本解决方案:创建一个表来存储您已向客户端授予许可的所有模块列表,并在加载每个模块时验证他是否在该表中存储了正确的模块密钥。如果是,则允许他使用该模块(然后它将检查角色和成员资格)..

于 2013-10-16T07:24:48.860 回答