如何确保对webmethods或mvc控制器的jquery / Ajax调用是否被授权?

时间:2012-06-08 17:21:29

标签: asp.net-mvc security webmethod

我怎样才能确保只有从Jquery / Ajax调用/ HTTP post get调用它的任何人都可以从web方法或mvc操作返回信息(你明白了)。

以前我会使用会话变量或视图状态在每次调用时执行此操作,这仍然是可能的。任何人都可以向我指出任何关于使这些电话安全的好演示,我已经看过一些,但他们很容易欺骗或解决。

谢谢!

2 个答案:

答案 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());
}