在ASP.NET Core Web中,使用[Authorize]特性需要安装以下NuGet程序包:
Microsoft.AspNetCore.Authentication.Cookies Microsoft.AspNetCore.Authentication.JwtBearer Microsoft.AspNetCore.Authorization
同时,需要配置认证和授权服务,在Startup类的ConfigureServices方法中添加以下代码:
// 添加认证服务 services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { options.LoginPath = "/Account/Login"; }) .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => { options.Authority = "https://localhost:5001"; // 配置授权服务地址 options.Audience = "webapi"; // 配置受保护的API名称 });
// 添加授权服务 services.AddAuthorization(options => { options.AddPolicy("RequireAdminRole", policy => policy.RequireRole("admin")); // 配置需要admin角色的授权策略 });
然后,在需要进行授权的控制器或者方法上添加[Authorize]特性即可。
例如,在控制器上添加[Authorize]特性:
[Authorize] public class HomeController : Controller { // ... }
或者在方法上添加[Authorize]特性:
public class HomeController : Controller { [Authorize] public IActionResult Index() { // ... } }