我有一个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:找到]?
答案 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”)]