SYSLIB0002:PrincipalPermissionAttribute 已过时

从 .NET 5 开始,PrincipalPermissionAttribute 构造函数已过时并生成编译时错误 SYSLIB0002。 不能实例化此属性或将其应用于方法。

与其他过时警告不同,无法禁止显示此错误。

工作区

  • 如果要将属性应用于 ASP.NET MVC 操作方法,请执行以下操作:

    考虑使用 ASP.NET 的内置授权基础结构。 以下代码演示如何使用 AuthorizeAttribute 属性来为控制器添加批注。 ASP.NET 运行时将在执行操作之前向用户授权。

    using Microsoft.AspNetCore.Authorization;
    
    namespace MySampleApp
    {
        [Authorize(Roles = "Administrator")]
        public class AdministrationController : Controller
        {
            public ActionResult MyAction()
            {
                // This code won't run unless the current user
                // is in the 'Administrator' role.
            }
        }
    }
    

    有关详细信息,请参阅 ASP.NET Core 中基于角色的授权ASP.NET Core 中的授权简介

  • 如果要将属性应用到 Web 应用上下文之外的库代码,请执行以下操作:

    通过调用 IPrincipal.IsInRole(String) 方法,在方法开始时手动执行检查。

    using System.Threading;
    
    void DoSomething()
    {
        if (Thread.CurrentPrincipal == null
            || !Thread.CurrentPrincipal.IsInRole("Administrators"))
        {
            throw new Exception("User is anonymous or isn't an admin.");
        }
    
        // Code that should run only when user is an administrator.
    }
    

另请参阅

PrincipalPermissionAttribute 已过时,报告为错误