有没有办法限制控制器操作只能从特定视图访问?我有一个查询实体在我的数据库中的详细信息页面,基本上是一个按钮和一个简单的JS确认提示我想更改此对象的一些属性并将其保存回数据库。我已经开发了一个控制器动作方法来完成这项工作,但我不知道如何限制对它的访问,因此用户不能(通过)在浏览器中传递特定URL来故意修改实体。我希望只有通过按下指定按钮才能在此特定详细信息页面上访问该操作。
我尝试使用[ChildActionOnly]
但它只能从另一个操作方法访问,而不是视图。
感谢您的帮助。
答案 0 :(得分:0)
感谢Stephen Muecke的评论,我设法让它发挥作用。
该按钮是一个简单的Action Link
,它会重定向到受限制的控制器操作:
public ActionResult ReturnBook(int id)
{
if (Request.UrlReferrer == null)
{
return HttpNotFound();
}
//code
}
该方法检查是否有任何UrlReferrer
。在浏览器中键入操作URL会导致referrer为null。
如果ActionLink
从视图中进行调用,则UrlReferrer
不为空,并且可以选中其属性Request.UrlReferrer.AbsolutePath
,并将其与所需的网址进行比较,调用只能是制作。在我的情况下,因为我没有在我的代码中的任何其他地方调用此方法,所以我只有null/notnull
条件。