基于资源的授权

时间:2016-12-13 12:10:01

标签: c# asp.net-mvc authorization

在我们正在处理的网络应用程序中,我们有Company实体,只有创建它的人才能编辑。

因此,每次调用EditCompany操作时,我们都必须检查数据库,看看当前登录的用户是否是公司的所有者。这只是一个示例,但我们拥有除“所有者”以外的更多权限类型以及Company以外的更多操作。

我们所做的是,在每个操作开始时,我们调用一些服务方法来查看该用户是否具有该资源的所需权限,例如companyService.HasEditPermission(userId, companyId),如果这是真的,我们会进一步开始。

但是最近,有人告诉我这样的代码应该在控制器中,但是应该创建一个处理该权限逻辑的自定义属性,然后我们将该属性放在控制器动作上。但是那个人不是Asp.Net程序员,他不知道如何在Asp.Net中实现它。所以我的问题是,是否可以在Asp.Net中执行类似的操作,如果是,我们应该如何实现呢?

1 个答案:

答案 0 :(得分:1)

  

所以我的问题是,是否有可能在Asp.Net中做类似的事情,如果是,我们应该如何实现呢?

是的,这完全可能,这是实现目标的好方法。

要实现这一点,您必须创建一个自定义Filter属性,该属性扩展AuthorizeAttribute类并覆盖它的OnAuthorization方法。在重写方法中,您可以检查请求参数(在filterContext参数上可用)并激活您的授权逻辑。

相关问题