Asp.net 阻止用户访问可由代码访问的操作
我使用最新的MVC,带有属性路由 当用户提交联系人表单时,它会重定向到“感谢您提交信息”视图,路径为routeAsp.net 阻止用户访问可由代码访问的操作,asp.net,asp.net-mvc,attributerouting,Asp.net,Asp.net Mvc,Attributerouting,我使用最新的MVC,带有属性路由 当用户提交联系人表单时,它会重定向到“感谢您提交信息”视图,路径为routefoo.com/success 我如何配置它,以便我的代码可以像往常一样重定向到该成功操作,但用户无法直接导航到它?如果页面中没有链接,用户将无法直接访问它。 否则,若用户无法访问它,您也不能通过代码访问它 [HttpGet] public ActionResult MyAction(){ //... return RedirectToAction("Success"); }
foo.com/success
我如何配置它,以便我的代码可以像往常一样重定向到该
成功
操作,但用户无法直接导航到它?如果页面中没有链接,用户将无法直接访问它。否则,若用户无法访问它,您也不能通过代码访问它
[HttpGet]
public ActionResult MyAction(){
//...
return RedirectToAction("Success");
}
[HttpGet]
public ActionResult Success(){
ViewBag.Result = "thank you for submitting your info";
return View();
}
如果您希望阻止用户使用url访问操作,则您的操作不得具有[HttpGet],或者必须在您的操作上设置AuthorizeAttribute。为此,请使用ajax请求调用您的操作,并使用Json向客户端发送成功消息
//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"});
}
“如果用户不能访问它,你也不能通过代码访问它”-是的,这是我害怕的。。。这并不是我真正想做的,但我想答案是,“这是做不到的”。所以你的答案是最接近我需要的。