在未经身份验证的API请求的情况下,如何防止重定向到登录网址?

时间:2020-10-14 06:23:35

标签: asp.net-core authentication authorization asp.net-core-webapi

我有一个ASP.NET Core 3.1.8 Web应用程序使用ASP身份。 一切正常,当用户尝试导航到需要身份验证的页面时,响应会将用户重定向到登录页面。

最近我创建了一些API控制器:

[Route("api/[controller]/[action]")]
[ApiController]
[Produces("application/json")]
public class MyController : ControllerBase
{
    [HttpGet]
    [Authorize]
    public ActionResult<string> PingAuth(string message)
    {
        return Ok($"Pong: {message}");
    }

在测试过程中,我注意到,如果我不进行身份验证就调用它,则响应将是重定向,而不是“ 401未经授权”。

问题

有什么方法可以解释api控制器发送[401:未授权]而不是[302:找到]?

1 个答案:

答案 0 :(得分:0)

尝试使用Authorize属性的属性Policy并要求经过身份验证的用户:

在启动中,ConfigureServices:

foreach($request->input('attributes') as $id => $value) {
   $products->whereHas('attributes', function ($q) use ($id, $value) {
         q->where('attributes.id', $id)
          ->whereRaw('CAST(value AS DECIMAL(10,2)) between ? and ?', $value);
       );
    }

然后您可以使用[Authorize(Policy =“ AuthUsers”)]