1

我正在尝试在我的 mvc 4 web api 中使用授权属性,但它不起作用。我知道我错过了一些东西,但我找不到。

[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);
4

2 回答 2

1

对于 Web API,请确保您正在使用

System.Web.Http命名空间

不是

System.Web.Mvc

于 2013-11-14T06:27:03.603 回答
0

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

祝你好运

于 2013-11-14T09:48:18.683 回答