Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Authorize属性和AuthorizePage(字符串)方法之间的差异_C#_Asp.net_Asp.net Core Mvc_Razor Pages_Asp.net Authorization - Fatal编程技术网

C# Authorize属性和AuthorizePage(字符串)方法之间的差异

C# Authorize属性和AuthorizePage(字符串)方法之间的差异,c#,asp.net,asp.net-core-mvc,razor-pages,asp.net-authorization,C#,Asp.net,Asp.net Core Mvc,Razor Pages,Asp.net Authorization,我想知道ASP.NET核心中的[Authorize]属性和AuthorizePage(string)方法是否有区别?该项目使用ASP.NET Core 3.1。使用它有什么优点或缺点吗 正如我所知,下面的两个代码是相同的: 使用[Authorize]属性 // ... namespace MyApp.Account.Manage { [Authorize] public partial class IndexModel : PageModel { // ... 使用启动

我想知道ASP.NET核心中的
[Authorize]
属性和
AuthorizePage(string)
方法是否有区别?该项目使用ASP.NET Core 3.1。使用它有什么优点或缺点吗

正如我所知,下面的两个代码是相同的:

使用
[Authorize]
属性

// ...
namespace MyApp.Account.Manage
{
    [Authorize]
    public partial class IndexModel : PageModel
    {
// ...
使用启动中的
授权页面(字符串)
方法。配置服务

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

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

使用
[Authorize]
属性。

在基于角色的授权中使用的Authorize属性,使您能够基于角色限制对资源的访问。它是一个声明性属性,可应用于控制器、操作方法或Razor页面。如果在没有任何参数的情况下指定此属性,则它仅检查用户是否经过身份验证

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

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

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

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


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

文档()明确说明:“使用AuthorizePage约定在指定路径处向页面添加AuthorizeFilter”@haim770[Authorize]属性也会在指定路径处添加授权。根据,它们都可以工作。所以选一个你最喜欢的。