【问题标题】:Difference between Authorize attribute and AuthorizePage(string) methodAuthorize 属性和 AuthorizePage(string) 方法的区别
【发布时间】:2020-12-14 22:19:18
【问题描述】:

我想知道 ASP.NET Core 中的[Authorize] 属性和AuthorizePage(string) 方法有什么区别吗?项目使用 ASP.NET Core 3.1。使用一个有什么好处或坏处吗?

据我所知,下面的两个代码是一样的:

使用 [Authorize] 属性

// ...
namespace MyApp.Account.Manage
{
    [Authorize]
    public partial class IndexModel : PageModel
    {
// ...

使用 AuthorizePage(string) 方法 Startup.ConfigureServices

services.AddMvc()
  .AddMvcOptions(o => o.EnableEndpointRouting = false)
  .AddRazorPagesOptions(options =>
  {
     options.Conventions.AuthorizePage("Account/Manage");
  });

【问题讨论】:

标签: c# asp.net asp.net-core-mvc razor-pages asp.net-authorization


【解决方案1】:

你是对的,[Authorize]属性和AuthorizePage()都是为指定页面设置授权。

使用[Authorize] 属性。

基于角色的授权中使用的 Authorize 属性,它使您能够根据角色限制对资源的访问。它是一个声明性属性,可以应用于控制器或操作方法或 Razor 页面。如果您不带任何参数指定此属性,它只会检查用户是否经过身份验证。

通过Authorize属性,当用户访问指定的控制器或动作方法或Razor页面时,会检查当前用户是否有访问权限。

使用 AddRazorPagesOptions 方法和 AuthorizePage() 方法。

Asp.net 核心提供了一种控制 Razor Pages 应用程序访问的方法是在启动时使用授权约定。通过这种方式,我们可以使用 AddRazorPagesOptions 方法为页面添加约定,例如使用 AuthorizePage 方法为指定页面添加授权(与 Authorize 属性相同)。

但是通过使用授权约定方法,它提供了相关的方法来为页面文件夹、区域页面或区域文件夹添加授权。

总结,如果您只想为指定页面设置授权,您可以使用它们中的每一个。但是,如果要为多个页面设置授权,最好使用授权约定方法。更多详细信息,请查看Razor Pages authorization conventions in ASP.NET Core

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多