阻止用户访问代码可访问的操作

时间:2014-10-08 08:25:03

标签: asp.net asp.net-mvc attributerouting

我使用最新的MVC,带有属性路由。

当用户提交联系表单时,它会重定向到"感谢您提交您的信息"查看,路线foo.com/success

如何配置它以便我的代码可以像往常一样重定向到success操作,但是用户无法直接导航到它?

2 个答案:

答案 0 :(得分:1)

如果您的页面中没有链接,用户将无法直接访问该链接 否则,如果用户无法访问它,则无法通过代码访问它。

[HttpGet]
public ActionResult MyAction(){
   //...
   return RedirectToAction("Success");
}

[HttpGet]
public ActionResult Success(){
   ViewBag.Result = "thank you for submitting your info";
   return View();
}

答案 1 :(得分:1)

如果你想阻止用户使用url访问操作你的动作必须没有[HttpGet]或者你必须在你的action上设置AuthorizeAttribute。为此使用ajax请求来调用你的动作并用Json将你的成功消息发送给客户端< / p>

    //Client Side
$.ajax({
    type: "POST",
    url: 'Action URL',
    contentType: "application/json; charset=utf-8",
    data: {id :1},
    dataType: "json",
    success: function(result) {
    alert(result.message);        
    }
    });


[HttpPost]
public ActionResult MyAction(string id){
   return Json(new {message="Your Message"});
}