我的Azure WebRole上的表单身份验证存在问题。它不存储登录的身份验证cookie。用户启动新会话后,必须再次登录。 首先我试过了:
FormsAuthentication.SetAuthCookie(userIdent, rememberMe);
现在手动完成:
var ticket = new FormsAuthenticationTicket(1, userIdent, DateTime.Now, DateTime.Now.AddMonths(6),rememberMe,string.Empty, FormsAuthentication.FormsCookiePath);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket)
{
Path = FormsAuthentication.FormsCookiePath,
HttpOnly = true
};
if (rememberMe)
{
cookie.Expires = ticket.Expiration;
}
Response.Cookies.Add(cookie);
这是web.config中的一个片段:
<machineKey decryption="Auto" decryptionKey="<My Decryption Key>" validation="SHA1" validationKey="<MyValidationKey>" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" slidingExpiration="true" timeout="2880" cookieless="UseCookies" />
</authentication>
但问题仍然存在。有时它会记得吗?因为它在Azure WebRole中运行,所以我们将MachineKey添加到web.config。
问题可能与Azure Web角色无关,因为我们注意到在本地运行的相同行为。例如。本地主机:7778