为www和没有www的表单身份验证

时间:2013-04-02 10:49:19

标签: asp.net .net asp.net-mvc asp.net-mvc-3 forms-authentication

这是我的配置文件的一部分

<authentication mode="Forms">
   <forms loginUrl="~/Account/Login" timeout="2880" enableCrossAppRedirects="true"
          name="authtoken" domain="localsite.com" />
</authentication>

这是我的身份验证方法

public void Authenticate(string token, int userId)
{
    var userData = new FormTicketUserData() {UserId = userId};
    var ticket = new FormsAuthenticationTicket(1, token, DateTime.Now, DateTime.MaxValue,  
                                               false, userData.ToString());
    var encryptString = FormsAuthentication.Encrypt(ticket);
    var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptString);
    authCookie.Path = FormsAuthentication.FormsCookiePath;
    HttpContext.Current.Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
    HttpContext.Current.Response.Cookies.Add(authCookie);
    HttpContext.Current.User = new MyFormsPrincipal(new FormsIdentity(ticket), userId);
    UserContext.Refresh();
}

当我在www.localsite.com上进行身份验证时,我不会在localsite.com上进行身份验证,反之亦然。
当我在www.localsite.com上进行身份验证时,我也需要在localsite.com上进行身份验证 我怎样才能做到这一点。

1 个答案:

答案 0 :(得分:0)

这解决了问题

authCookie.Domain = "localsite.com";