AuthorizeAttribute无法识别ASP.NET中的AuthCookie

时间:2016-12-26 12:41:43

标签: c# asp.net asp.net-mvc authorization

成功登录后,我有这一行

FormsAuthentication.SetAuthCookie(a.username, true);

然后我有几个页面需要登录才能被访问,所以我添加了[Authorize]属性,就像这样

[Authorize]
public ActionResult Upload()
{
    return View();
}

但是,登录后,此类功能仍会返回401 - 未授权错误页面,就像用户尚未登录一样。错误页面指出: 登录方法匿名 登录用户匿名

此外,在我的项目中,启用了匿名身份验证,并禁用了Windows身份验证。

我正在寻找一种解决方案,其中像Upload()这样的功能总是可供任何登录用户使用。

2 个答案:

答案 0 :(得分:0)

你能做什么,我做的是用这种方式写你自己的cookie:

FormsAuthenticationTicket authTicket = new
     FormsAuthenticationTicket(1, //version number of ticket
     userName, // UserName
     DateTime.Now,             //cookie creation time
     DateTime.Now.AddHours(24), //Expiration time . cookie valid for 1 day
     true,  //Persistent
     userData); // other data to store in ticket

//设置Cookie

Response.SetCookie(
            new HttpCookie(
                FormsAuthentication.FormsCookieName,
                FormsAuthentication.Encrypt(authTicket)) //// encrypt ticket
            {
                Expires = DateTime.Now.AddHours(24),
                HttpOnly = true,
                Secure = FormsAuthentication.RequireSSL
            });

答案 1 :(得分:0)

"需要启用表单身份验证,如果你有system.web"请查看你的web.config。 - glacasa