我想在尝试执行无效操作时向客户端返回403 Forbidden.我需要使用的方法是什么?
我通过互联网搜索但我发现只有MVC 5:
如果您的web api方法的返回类型是HttpResponseMessage,那么您需要使用以下代码:
Run Code Online (Sandbox Code Playgroud)return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "RFID is disabled for this site."); Or if the return type for your web api method is IHttpActionResult then you need to use the below code return StatusCode(HttpStatusCode.Forbidden,"RFID is disabled for this site.");如何为IActionResult类型返回403:
Run Code Online (Sandbox Code Playgroud)public IActionResult Put(string userid, [FromBody]Setting setting) { var result = _SettingsRepository.Update(userid, setting); if (result == true) { return Ok(201); } else { return BadRequest(); } }
Bar*_*jen 52
当您希望以HTTP 403状态响应并允许 ASP.NET Core的身份验证逻辑使用其禁止处理逻辑处理响应时(可以在您的Startup类中配置,并可能导致重定向到另一个页面),请使用:
return Forbid();
Run Code Online (Sandbox Code Playgroud)
(同样适用于Unauthorized())
如果要使用API中的HTTP 403状态代码进行响应,并且不希望 ASP.NET Core身份验证逻辑执行任何重定向或其他操作,请使用:
return StatusCode(403);
Run Code Online (Sandbox Code Playgroud)
juu*_*nas 12
替代MstfAsan的答案是使用:
return Forbid();
Run Code Online (Sandbox Code Playgroud)
它是控制器基类上执行相同操作的方法.
要么
return StatusCode(403);
Run Code Online (Sandbox Code Playgroud)
如果要返回消息,则必须使用StatusCode.
sha*_*aka 10
您只需使用 ObjectResult 返回带有状态代码的自定义响应即可。
查看语法,
return new ObjectResult("Message") {StatusCode = YOUR_STATUS_CODE };
Run Code Online (Sandbox Code Playgroud)
注意 - 您也可以传递一个对象,
return new ObjectResult(your_model) {StatusCode = YOUR_STATUS_CODE };
Run Code Online (Sandbox Code Playgroud)
例子:
public async Task<IActionResult> Post([FromBody] SomeData _data)
{
// do your stuff
// return forbidden with custom message
return new ObjectResult("Forbidden") { StatusCode = 403};
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 return new ForbidResult();Class声明为
public class ForbidResult : ActionResult, IActionResult
Run Code Online (Sandbox Code Playgroud)
有关更多特殊用途,请访问https://docs.microsoft.com/zh-cn/aspnet/core/api/microsoft.aspnetcore.mvc.forbidresult
| 归档时间: |
|
| 查看次数: |
28811 次 |
| 最近记录: |