基于数据的权利/授权在ASP.Net MVC 3
我的谷歌技能是让我失望的。我正在寻找在ASP.Net MVC(3)中执行基于数据的权利的“正确方法”。基于数据的权利/授权在ASP.Net MVC 3
定期授权,其中只需要知道用户和路径可以使用[Authorize]
属性完成,但这看起来不适用于基于数据的权利b/c需要连接到数据存储。
将支票插入操作方法的正确方法是明显的方法吗?
是插入 检查到动作方法的 正道的明显的方法?
这就是我所做的。
if (!userHasAuthorization)
return view("Unauthorized");
这是迄今为止最简单的方法。
为了确保您只需执行一次“userHasAuthorization”,您可以在您的存储库或服务层中放入一个方法来检查授权,并使用该方法代替布尔值userHasAuthorization
。
不知道“基于数据的权利”是什么。我确实相信自定义动作过滤器会让你得到你想要的。这可以让你在授权的情况下管理任何你需要的路线,用户等的上下文。给予更细粒度的控制。也给你可重用性,所以你不需要将if语句插入到你的动作方法中。
我想他在问什么:如何从数据库中查找授权值,而无需将您的自定义'AuthorizeAttribute'紧密耦合到数据库?这是我经常想知道的事情。自定义'AuthorizeAttribute'不能访问你的仓库,但是当你输入Action Method的时候,已经太晚了。 – 2011-05-23 00:21:12
然后我会采用我在这里提到的这种方法,自定义动作过滤器让你在进入动作方法之前返回。 – Slappy 2011-05-23 00:25:49
您可以创建自[Authorize]
属性导出的自定义操作筛选器,该属性使用数据存储来检查授权。
关于如何做到这一点的任何细节 - 意思是,如何给MyAuthorize类一个'IDBConnection'的实例? – 2011-05-23 00:24:51
什么是“基于数据的权利?”你的意思是“安全”还是“授权?”尝试寻找“ASP.NET MVC中基于表的安全性”。 – 2011-05-23 00:15:22
@Robert - 没错,我已经更新了标题以反映这 – 2011-05-23 00:25:14
http://stackoverflow.com/questions/1482135/custom-authorizeattribute – 2011-05-23 00:27:15