在asp.net core web api中,我应该如何发送401和403响应代码?

问题描述 投票:0回答:1

我需要在删除用户的同时发送401和403响应代码。我试图使用基于属性的路由。响应401为对象(applicationjson):{success: false}响应403为对象(applicationjson):{success: false}。

[Authorize]
[Route("users/{id}")]
[HttpDelete]
public ActionResult DeleteUser(Guid id)
{
    try
    {
        using (var context = new POCContext())
        {
            var entity = context.Users.FirstOrDefault(e => e.UserId == id);
            if (entity == null)
            {
                return NotFound(new { success = false });
            }
            else
            {
                context.Users.Remove(entity);
                context.SaveChanges();
                return NoContent();
            }
        }
    }
    catch (Exception ex)
    {
        return BadRequest(new { success = false });
    }
}

X

asp.net-core asp.net-web-api asp.net-core-2.1 http-status-codes entity-framework-core-2.1
1个回答
0
投票

因为你在一个控制器中,你可以修改控制器的 Response 在您的方法中直接做 Response.StatusCode = 401; 像以下这些:

[Authorize]
[Route("users/{id}")]
[HttpDelete]
public ActionResult DeleteUser(Guid id)
{
    try
    {
        using (var context = new POCContext())
        {
            var entity = context.Users.FirstOrDefault(e => e.UserId == id);
            if (entity == null)
            {
                Response.StatusCode = 401;
                return NotFound(new { success = false });
            }
            else
            {
                context.Users.Remove(entity);
                context.SaveChanges();
                Response.StatusCode = 200;
                return NoContent();
            }
        }
    }
    catch (Exception ex)
    {
        Response.StatusCode = 401;
        return BadRequest(new { success = false });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.