我正在尝试在我的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);
答案 0 :(得分:1)
对于Web API,请确保使用
System.Web.Http
命名空间
不
System.Web.Mvc
答案 1 :(得分:0)
AFAIK,你可以[授权]控制器的动作。但我不知道在任何其他方法上尝试它。几件事情要考虑,检查您的cookie是否在登录和注销期间被正确清除或存储。你可以写一个自定义授权过滤器。检查this
祝你好运