SYSLIB0002: PrincipalPermissionAttribute sudah usang
PrincipalPermissionAttribute Konstruktor kedaluwarsa dan menghasilkan kesalahan SYSLIB0002
waktu kompilasi , mulai dari .NET 5. Anda tidak dapat membuat instans atribut ini atau menerapkannya ke metode .
Tidak seperti peringatan usang lainnya, Anda tidak dapat menekan kesalahan.
Penyelesaian masalah
Jika Anda menerapkan atribut ke metode tindakan MVC ASP.NET:
Pertimbangkan untuk menggunakan ASP. Infrastruktur otorisasi bawaan NET. Kode berikut menunjukkan cara membuat anotasi pengontrol dengan AuthorizeAttribute atribut . Runtime ASP.NET akan mengotorisasi pengguna sebelum melakukan tindakan.
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. } } }
Untuk informasi selengkapnya, lihat Otorisasi berbasis peran di ASP.NET Core dan Pengenalan otorisasi di ASP.NET Core.
Jika Anda menerapkan atribut ke kode pustaka di luar konteks aplikasi web:
Lakukan pemeriksaan secara manual di awal metode Anda dengan memanggil IPrincipal.IsInRole(String) metode .
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. }