是否应该在每个视图中检查用户的授权?

时间:2018-09-24 13:24:02

标签: c# .net asp.net-core-mvc asp.net-identity

因此,我正在.NET Core 2.1中进行MVC项目。 我使用来自ASP.NET Identity的内置Cookie身份验证。

我控制器内所有需要授权的端点都用[Authorize]注释。但是,我的视图(返回的视图)是否还需要一种注释形式来定义它们仅可被授权用户访问?如果是这种情况,您将如何做?

2 个答案:

答案 0 :(得分:2)

在我看来,在.cshtml-View中检查身份验证或授权与MVC概念矛盾。当请求到达MVC的“视图”部分时,已经有一个相应的控制器参与其中,该控制器完成了其工作并称为视图引擎。至此,您已经(或应该)完成了处理业务逻辑的工作-而权限只是业务需求的另一种形式-并以最奇妙的方式展示其结果。

所以要具体回答您的问题:

  

但是,我的视图(返回的视图)是否还需要一种注释形式来定义它们仅可被授权用户访问?

由于只能通过控制器(或应该通过控制器)访问它们,因此它们不需要其他注释。

答案 1 :(得分:0)

视图或部分视图只能由控制器的任何操作访问,因此,如果对控制器或操作应用[Authorize]过滤器,则无需在视图中使用它。

但是,如果要在视图中对用户进行身份验证,则可以使用身份用户的扩展方法IsInRole("Role")