我的谷歌技能在这方面让我失望。我正在寻找在 ASP.Net MVC (3) 中执行基于数据的权利的“正确方法”。
对于只需要知道用户和路线的常规权利,可以使用该[Authorize]
属性来完成,但这似乎不适用于需要与数据存储建立连接的基于数据的权利 b/c。
将检查插入操作方法的明显方法是否正确?
我的谷歌技能在这方面让我失望。我正在寻找在 ASP.Net MVC (3) 中执行基于数据的权利的“正确方法”。
对于只需要知道用户和路线的常规权利,可以使用该[Authorize]
属性来完成,但这似乎不适用于需要与数据存储建立连接的基于数据的权利 b/c。
将检查插入操作方法的明显方法是否正确?
将检查插入操作方法的明显方法是否正确?
我就是做这个的。
if (!userHasAuthorization)
return view("Unauthorized");
这是迄今为止最简单的方法。
为了确保您只需要执行一次“userHasAuthorization”,您可以在存储库或服务层中放置一个方法来检查授权,并使用它来代替 boolean value userHasAuthorization
。
不知道什么是“基于数据的权利”。我相信自定义操作过滤器会给你你想要的。这使您可以通过具有路由、用户等的上下文来管理您在授权方面所需的任何内容。提供更细粒度的控制。还为您提供了可重用性,因此您无需将 if 语句插入到您的操作方法中。
You could create a custom action filter derived from the [Authorize]
attribute that uses the data store to check authorization.