授权 WebAPI 表现得像 MVC

Authorization WebAPI behaving like MVC

我正在使用 asp.core 2.1 创建网站 API 我有一个这样的控制器

 [Route("api")]
 [ApiController]
 public class LessonController : ControllerBase
 {

    [HttpGet]
    [Route("lessons/{id}")]
    [Authorize(Roles = "Teacher")]
    public async Task<IActionResult> GetLesson(int id)
    {
      //....
    }
 }

使用 [Authorize] 属性我只得到下面的错误?

The default Identity UI layout requires a partial view '_LoginPartial' usually located at '/Pages/_LoginPartial' or....

因为这是一个 API 我很困惑为什么在错误中它正在寻找部分视图?

您提到的错误消息来自ASP.NET Core Identity's Default UI(具体来说,它在_Layout.cshtml页面here)。当您在 Startup.ConfigureServices 中使用以下任一选项时,将使用默认值 UI:

services.AddDefaultIdentity<User, Role>()
    ...

-或-

services.AddIdentity<User, Role>()
    .AddDefaultUI()
    ...

如果您不想使用默认值 UI,则需要避免使用 AddDefaultIdentityAddDefaultUI,只需使用 AddIdentity<User, Role>.