是否可以将我的操作方法的控制器操作访问权限制为仅限AJAX请求?仅限网站的控制器操作
我的意思是一个非Ajax请求来执行它将被重定向到404或抛出错误。 Action只会返回正确的结果,如果请求是由JS在我自己的页面上进行的。
我试图谷歌它,但没有找到答案。我知道我可以为此实现自定义过滤器,但是它可能已经存在于MVC中了?
谢谢。
是否可以将我的操作方法的控制器操作访问权限制为仅限AJAX请求?仅限网站的控制器操作
我的意思是一个非Ajax请求来执行它将被重定向到404或抛出错误。 Action只会返回正确的结果,如果请求是由JS在我自己的页面上进行的。
我试图谷歌它,但没有找到答案。我知道我可以为此实现自定义过滤器,但是它可能已经存在于MVC中了?
谢谢。
创建自定义操作方法选择以阻断非Ajax调用
public class AjaxOnlyAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
你的属性将在经典的方式
[AjaxOnly]
public ActionResult Index()
{
应用或者你可以将它应用到你的控制器
[AjaxOnly]
public class HomeController : Controller
{
我不确定我会建议你将用户发送到404,但一如既往,只有开发人员了解他们的要求。所以我建议你考虑一下,如果你想以一种“更温和”的方式来重定向到警告页面。
嘿今天快速配对你。 – IamStalker 2013-03-06 21:08:08
@IamStalker,感觉今天划成 – 2013-03-06 21:09:21
好好好好!也许我会更快下一次 – IamStalker 2013-03-06 21:10:31
我对你的意图有点失落。你想阻止来自未经身份验证或错误角色用户的未授权请求吗? – 2013-03-06 20:25:18
我只想阻止直接的请求动作(当有人在浏览器URL栏中输入“www.mysite.com/controller/action”时)。 – 2013-03-06 20:27:38
HttpPostAttribute足以阻止浏览器栏;) – Olexander 2013-03-06 20:39:27