C# 自定义AuthorizeAttribute-对登录用户和api用户使用相同的控制器
我有一个api控制器,几个桌面应用程序使用它来获取数据。调用方可以使用基本身份验证或JwtBearer身份验证,并且可以正常工作C# 自定义AuthorizeAttribute-对登录用户和api用户使用相同的控制器,c#,asp.net-mvc,asp.net-web-api,asp.net-core-3.1,C#,Asp.net Mvc,Asp.net Web Api,Asp.net Core 3.1,我有一个api控制器,几个桌面应用程序使用它来获取数据。调用方可以使用基本身份验证或JwtBearer身份验证,并且可以正常工作 [ApiController] [Route("[controller]")] public class MyController : ControllerBase { [HttpGet("{id}")] [ReadOnly] public IActionResult Get([FromRoute] st
[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase
{
[HttpGet("{id}")]
[ReadOnly]
public IActionResult Get([FromRoute] string id)
{
return Ok();
}
}
public class ReadOnlyAttribute : AuthorizeAttribute
{
public ReadOnlyAttribute()
{
AuthenticationSchemes = "BasicAuthentication,Bearer";
Roles = "ReadOnly";
}
}
对于登录到该站点的用户,我现在创建了一个直接指向该资源的链接,这样就可以在浏览器中查看该资源,并可以手动下载
但是会弹出一个浏览器登录对话框,请求用户登录
所以我天真地将“Cookies”添加到AuthenticationSchemes中,但结果相同
AuthenticationSchemes = "Cookies,BasicAuthentication,Bearer";
如果我根本不设置AuthenticationSchemes,它对登录的用户很好,但api用户得到的结果是302
是否可以以某种方式重用这样的控制器,或者我必须为api和登录用户使用单独的控制器