在我们正在处理的网络应用程序中,我们有Company
实体,只有创建它的人才能编辑。
因此,每次调用EditCompany
操作时,我们都必须检查数据库,看看当前登录的用户是否是公司的所有者。这只是一个示例,但我们拥有除“所有者”以外的更多权限类型以及Company
以外的更多操作。
我们所做的是,在每个操作开始时,我们调用一些服务方法来查看该用户是否具有该资源的所需权限,例如companyService.HasEditPermission(userId, companyId)
,如果这是真的,我们会进一步开始。
但是最近,有人告诉我这样的代码应该在控制器中,但是应该创建一个处理该权限逻辑的自定义属性,然后我们将该属性放在控制器动作上。但是那个人不是Asp.Net
程序员,他不知道如何在Asp.Net
中实现它。所以我的问题是,是否可以在Asp.Net
中执行类似的操作,如果是,我们应该如何实现呢?
答案 0 :(得分:1)
所以我的问题是,是否有可能在Asp.Net中做类似的事情,如果是,我们应该如何实现呢?
是的,这完全可能,这是实现目标的好方法。
要实现这一点,您必须创建一个自定义Filter属性,该属性扩展AuthorizeAttribute类并覆盖它的OnAuthorization方法。在重写方法中,您可以检查请求参数(在filterContext参数上可用)并激活您的授权逻辑。