我怎样才能确保只有从Jquery / Ajax调用/ HTTP post get调用它的任何人都可以从web方法或mvc操作返回信息(你明白了)。
以前我会使用会话变量或视图状态在每次调用时执行此操作,这仍然是可能的。任何人都可以向我指出任何关于使这些电话安全的好演示,我已经看过一些,但他们很容易欺骗或解决。
谢谢!
答案 0 :(得分:0)
您可以使用AuthorizeAttribute
作为操作过滤器来过滤对控制器的访问。您只需将此属性添加到要限制访问权限的控制器即可。我认为msdn有一个很好的例子:
http://msdn.microsoft.com/en-us/library/dd381413(v=vs.90).aspx
答案 1 :(得分:-2)
在这种情况下,您也可以使用Session。
1.创建一个名为的ActionFilterAttribute类,例如LoginFilterAttribute。
public sealed class LoginFilterAttribute:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//check if the user is logged in
if (Session["UserSessionKey"]==null)
//redirect to login page or do nothing
else
//return data or do something else
}
}
2。在您的操作中,将此属性放在操作方法
之前[LoginFilter]
public ActionResult ActionNeedLogin()
{
return View();
}
或者,在global.asax中注册该属性以保持匿名访问的所有操作。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyHandleErrorAttribute());
filters.Add(new LoginFilterAttribute());
}