授权属性不起作用

时间:2013-11-14 06:22:31

标签: c# asp.net asp.net-mvc-4 forms-authentication

我正在尝试在我的mvc 4 web api中使用authorize属性,但它无效。我知道我错过了一些东西,但我无法找到。

[HttpGet]
    [Authorize]
    public JArray getDistance(string origin, string destination)
    {
       some code..
    }

我的web.config文件是 -

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" requireSSL="true" cookieless="UseCookies" name="authcookie"  protection="All" slidingExpiration="false">
  </forms>
</authentication>

我的表单身份验证Cookie是 -

FormsAuthenticationTicket token = new FormsAuthenticationTicket(
            1,
            UserName,
            DateTime.Now,
            DateTime.Now.AddHours(24),
            false,
            "user Token"

            );
        string EncToken = FormsAuthentication.Encrypt(token);
        HttpCookie cookie = new HttpCookie("authcookie", EncToken);
        cookie.HttpOnly = true;
        HttpContext.Current.Response.Cookies.Set(cookie);

2 个答案:

答案 0 :(得分:1)

对于Web API,请确保使用

System.Web.Http命名空间

System.Web.Mvc

答案 1 :(得分:0)

AFAIK,你可以[授权]控制器的动作。但我不知道在任何其他方法上尝试它。几件事情要考虑,检查您的cookie是否在登录和注销期间被正确清除或存储。你可以写一个自定义授权过滤器。检查this

祝你好运