因此,我正在.NET Core 2.1中进行MVC项目。 我使用来自ASP.NET Identity的内置Cookie身份验证。
我控制器内所有需要授权的端点都用[Authorize]
注释。但是,我的视图(返回的视图)是否还需要一种注释形式来定义它们仅可被授权用户访问?如果是这种情况,您将如何做?
答案 0 :(得分:2)
在我看来,在.cshtml-View中检查身份验证或授权与MVC概念矛盾。当请求到达MVC的“视图”部分时,已经有一个相应的控制器参与其中,该控制器完成了其工作并称为视图引擎。至此,您已经(或应该)完成了处理业务逻辑的工作-而权限只是业务需求的另一种形式-并以最奇妙的方式展示其结果。
所以要具体回答您的问题:
但是,我的视图(返回的视图)是否还需要一种注释形式来定义它们仅可被授权用户访问?
由于只能通过控制器(或应该通过控制器)访问它们,因此它们不需要其他注释。
答案 1 :(得分:0)
视图或部分视图只能由控制器的任何操作访问,因此,如果对控制器或操作应用[Authorize]
过滤器,则无需在视图中使用它。
但是,如果要在视图中对用户进行身份验证,则可以使用身份用户的扩展方法IsInRole("Role")
。