ASP.NET Core 中的授权是一种非常重要的功能,它允许我们限制用户对应用程序中的资源和操作的访问。其中,[Authorize] 属性是实现授权的关键。然而,有时我们可能会遇到一个问题,就是无论是否登录,[Authorize] 属性始终返回 401 未授权的状态码。接下来,我们将探讨这个问题,并提供解决方案。
在 ASP.NET Core 中,我们可以使用 [Authorize] 属性来标记需要授权的控制器和操作方法。例如,我们有一个名为 HomeController 的控制器,其中有一个需要授权的操作方法:csharppublic class HomeController : Controller{ [Authorize] public IActionResult Index() { return View(); }}在上面的代码中,[Authorize] 属性标记了 Index 方法,表示只有经过身份验证的用户才能访问该方法。但是,当我们运行应用程序并尝试访问该方法时,无论是否登录,我们都会收到一个 401 未授权的状态码。解决方案:配置身份验证和授权要解决这个问题,我们需要正确配置身份验证和授权。首先,我们需要确保在 Startup.cs 文件的 Configure 方法中启用身份验证和授权中间件。我们可以通过调用 UseAuthentication 和 UseAuthorization 方法来实现:csharppublic void Configure(IApplicationBuilder app, IWebHostEnvironment env){ // ... app.UseAuthentication(); app.UseAuthorization(); // ...}接下来,我们需要配置身份验证方案。在 ASP.NET Core 中,有多种身份验证方案可供选择,例如 Cookie、JWT、OpenID Connect 等。我们可以通过调用 AddAuthentication 方法来配置身份验证方案:csharppublic void ConfigureServices(IServiceCollection services){ // ... services.AddAuthentication("CookieAuthentication") .AddCookie("CookieAuthentication", config => { config.Cookie.Name = "MyApp.Cookie"; config.LoginPath = "/Account/Login"; }); // ...}在上面的代码中,我们使用了 CookieAuthentication 方案,并指定了 cookie 的名称和登录路径。通过正确配置身份验证和授权,我们可以解决 [Authorize] 属性始终返回 401 未授权的问题。在本文中,我们了解了如何配置身份验证和授权中间件,并提供了相应的示例代码。希望这篇文章对你在 ASP.NET Core 中使用授权有所帮助。如果你还有其他问题,请随时提问。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号