我有一个ASP .Net 4.5 MVC网站,我在this tutorial之后定制了表单身份验证。不同之处在于我通过后端dll进行身份验证,因此我跳过教程中的所有数据库内容,教程从数据库中获取用户,我从常规方法调用中获取它。 我之前已经按照本教程在新的MVC网站上成功实现了它。这次我在现有的MVC网站上实现了它,我无法让它工作。
当cookie添加到Response.Cookies
时,它只存在,直到代码向用户返回View。之后Response.Cookies
中不再存在,这意味着在Global.asax Application_PostAuthenticateRequest
方法中,var authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
始终返回null
。
我试图添加其他简单的cookie,这些仍然按预期持续。
这就是我添加表单身份验证cookie的方式
CustomUser user = service.GetUser(username, password);
if (user != null)
{
var serializeModel = new CustomPrincipalSerializeModel
{
UserName = user.UserName,
UserId = user.Id
};
var userData = JsonConvert.SerializeObject(serializeModel);
var authTicket = new FormsAuthenticationTicket(1, user.Id, DateTime.Now, DateTime.Now.AddMinutes(30), false, userData);
var encryptedTicket = FormsAuthentication.Encrypt(authTicket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) { Expires = DateTime.Now.AddMinutes(30) };
Response.AppendCookie(cookie);
}
如果我更改此行
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) { Expires = DateTime.Now.AddMinutes(30) };
要
var cookie = new HttpCookie("test", "testing") { Expires = DateTime.Now.AddMinutes(30) };
然后“测试”cookie将按预期运行,我可以在Global.asax中获取它Application_PostAuthenticateRequest