我正在考虑在我的ASP.NET应用程序中构建一个具有以下要求的身份验证.
用户只有一个角色(即Admin,SalesManager,Sales,....)
角色具有一组CRUD访问现有对象子集的权限.即"Sales对对象类型"产品具有CREAD,READ,WRITE权限"但不是DELETE"
不知何故,我喜欢在具有继承的层次结构中的权限,因此我对于管理员不需要指定所有可用对象.
系统必须能够快速回答"用户X是否有权对Y进行对象Z"的问题
所有数据库管理(MSSQL),在C#/ ASP.NET中实现
我想获得有关这些要求的反馈意见吗?任何想法如何使用ASP.NET框架(尽可能)实现这一点?(但是,我也有兴趣知道如果没有会员资格可以实现这一目标)
我认为您需要在此处执行的是在业务对象或控制器中实现一组权限查询方法.示例:CanRead(),CanEdit(),CanDelete()
页面呈现时,它需要查询业务对象并确定用户授权的功能,并根据此信息启用或禁用功能.反过来,业务对象可以使用角色或其他数据库查询来确定活动用户的权限.
我想不出一种集中声明性地定义这些权限的方法.它们需要分配到函数的实现中.但是,如果要改进设计,可以使用依赖项注入将授权程序插入到业务对象中,从而使实现保持独立.
在Rocky Lhotka的书中有一些代码使用了这个模型.新版本尚未在Google中使用.