C# 允许在asp.net核心web项目中使用windows和基本身份验证

C# 允许在asp.net核心web项目中使用windows和基本身份验证,c#,authentication,asp.net-core,C#,Authentication,Asp.net Core,我不确定这是否是一条路,但这就是我正在努力实现的目标。我有两种不同类型的控制器动作方法。我需要两种不同的身份验证方法 例如家庭控制器 [Authorize(AuthenticationSchemes = "Windows")] public class HomeController : Controller { public IActionResult Index() { return View(); } } [Authorize(Authenticat

我不确定这是否是一条路,但这就是我正在努力实现的目标。我有两种不同类型的控制器动作方法。我需要两种不同的身份验证方法

例如家庭控制器

[Authorize(AuthenticationSchemes = "Windows")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
[Authorize(AuthenticationSchemes = "BasicAuthentication")]
[Route("api/my-service")]
[ApiController]
public class ServiceController : ControllerBase
{
    [Route("Evaluate")]
    [HttpPost]
    public EvaluateResponse Evaluate([FromBody]EvaluateRequest request)
    {
        //return something;
    }
}
服务控制器

[Authorize(AuthenticationSchemes = "Windows")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
[Authorize(AuthenticationSchemes = "BasicAuthentication")]
[Route("api/my-service")]
[ApiController]
public class ServiceController : ControllerBase
{
    [Route("Evaluate")]
    [HttpPost]
    public EvaluateResponse Evaluate([FromBody]EvaluateRequest request)
    {
        //return something;
    }
}
Startup.cs(配置服务)

基本身份验证代码的实现如前所述

现在,如果我试图调用
api/my service/Evaluate
,它仍然在调用windows身份验证


如何实现两种不同的身份验证技术,一种用于
HomeController
,另一种用于
ServiceController

我的代码正在运行,只需要在
launchSettings.json
文件中添加以下内容

{
  "iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": true
     }
}

@我已经看过那篇文章了。我无法理解,我如何告诉
HttpRequest
绕过windows身份验证,如果重定向到
ServiceController
,则基于基本身份验证进行验证?您可以为不同的控制器指定不同的身份验证方案。@Shaggy这说明了如何在同一项目中同时使用Jwt和basic,这是一个API项目,但它应该仍然能够向您展示您所需要的()。不过,我对您的体系结构有点困惑,如果您的服务包含您所说的暴露于外部世界的API,为什么不让它成为自己的独立实体,并从web项目调用它呢?让我们假设我希望在一个控制器上进行windows身份验证,在另一个控制器上进行基本身份验证。我已经用所需的代码更新了我的问题。谢谢