我如何确保任何人从 Jquery/Ajax 调用/HTTP post get 调用它时不会从 webmethod 或 mvc 操作返回信息(你明白了)。
以前我会在每次调用时使用会话变量或视图状态来执行此操作,这仍然可能吗?任何人都可以向我指出有关使这些调用安全的任何好的演示,我见过一些,但它们很容易被欺骗或解决。
谢谢!
我如何确保任何人从 Jquery/Ajax 调用/HTTP post get 调用它时不会从 webmethod 或 mvc 操作返回信息(你明白了)。
以前我会在每次调用时使用会话变量或视图状态来执行此操作,这仍然可能吗?任何人都可以向我指出有关使这些调用安全的任何好的演示,我见过一些,但它们很容易被欺骗或解决。
谢谢!
您可以将AuthorizeAttribute
用作操作过滤器来过滤对控制器的访问。您可以将此属性添加到要限制访问的控制器中。我认为 msdn 有一个很好的例子:http:
//msdn.microsoft.com/en-us/library/dd381413 (v=vs.90).aspx
在这种情况下,您也可以使用 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.在你的action中,把这个属性放在action方法之前
[LoginFilter]
public ActionResult ActionNeedLogin()
{
return View();
}
或者,在 global.asax 中注册属性以防止匿名访问的所有操作。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyHandleErrorAttribute());
filters.Add(new LoginFilterAttribute());
}