是否可以将操作方法限制为"only redirect-to access"?



使用ASP。NET Core 3.1-MVC,我有一个HTTP Post操作方法,它从客户端获取数据并处理数据库。因为这个操作方法很长,很不整洁,而且有很多重复的代码,所以我决定简化这个操作方法,并使用Redirect to。类似这样的东西:

[HttpPost]
[ValidateAntiForgeryToken]
[Route("MainActionMethod")]
public async Task<IActionResult> MainActionMethod([FromBody]object jsonData) 
{
.  .  .  
if (condition a) 
return RedirectToAction("Action1");
if (condition b) 
return RedirectToAction("Action2");
.  .  . 
}

Action1必须是HTTPGet才能重定向,这样用户就可以键入这样的URL并修改我的数据库

http://www.example.com/?param1="Hello"&param2="Stacky"

如何从浏览器禁用对HTTP GET Action1的访问,并且只能通过其他操作方法或重定向到来访问?

Requestheader中有一个属性Referer。如果从浏览器访问,则其值为空。使用此项来确定后续处理过程。

[HttpPost]
[ValidateAntiForgeryToken]
[Route("MainActionMethod")]
public async Task<IActionResult> MainActionMethod([FromBody]object jsonData)
{
if (true) 
return RedirectToAction("Action1");
}
public IActionResult Action1()
{
StringValues header ;
Request.Headers.TryGetValue("Referer",out header);
if (header.Count==0)
{
return BadRequest();
}
return Ok("Action1");
}

相关内容

  • 没有找到相关文章

最新更新