我希望在标头中传递的令牌与我的配置中的值不匹配时限制对api的访问。我在项目中创建了一个自定义guid,以防止访问不匹配的标记值或空标题值。
使用此设置如何从控制器中的操作正确返回404或其他状态,该控制器的返回类型是特定类型的列表(用于返回JSON)?
[HttpGet]
[Route("getList")]
public List<_Type> func([FromUri] int? value)
{
if (Request.Headers == null || !Request.Headers.Contains("token") || Request.Headers.GetValues("token").First() != ConfigurationManager.AppSettings["token"])
throw new HttpException(404, "Not found"); //works but triggers a object null reference exeption
return new List<_Type>();
}
答案 0 :(得分:2)
您可以将返回类型更改为IHttpActionResult。 Ok()方法将对象作为参数,以便您可以传递集合。
[HttpGet]
[Route("getList")]
public IHttpActionResult func([FromUri] int? value)
{
if (Request.Headers == null || !Request.Headers.Contains("token") || Request.Headers.GetValues("token").First() != ConfigurationManager.AppSettings["token"])
return NotFound(); //works but triggers a object null reference exeption
return Ok(new List<_Type>());
}
答案 1 :(得分:1)
[HttpGet]
[Route("getList")]
public ActionResult func([FromUri] int? value) {
if (Request.Headers == null || !Request.Headers.Contains("token") || Request.Headers.GetValues("token").First() != ConfigurationManager.AppSettings["token"])
return NotFound();
return Json(new List<_Type>());
}