像MVC一样授权WebAPI

时间:2018-12-08 21:21:47

标签: c# asp.net-core asp.net-core-identity

我正在使用asp.core 2.1创建Web 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,我很困惑为什么在错误中它正在寻找局部视图?

1 个答案:

答案 0 :(得分:1)

您引用的错误消息来自ASP.NET Core Identity的默认UI(特别是在_Layout.cshtmlhere中)。在Startup.ConfigureServices中使用以下任一选项时,将使用默认UI:

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

-或-

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

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