将auth cookie有条件地传递到不同Web服务器上的两个站点

时间:2018-02-06 20:47:53

标签: c# asp.net-mvc forms-authentication

所以,我有两个可以从同一个链接访问的站点,基于我将从我的主站点称为“条件”的条件:

if (Condition) {
    permission = true;
    window.location.href = 'http://Site1?CID=' + CtxCID;
    return;
    Destination = "site1";
} else {
    permission = true;
    window.location.href = 'http://site2?CID=' + CtxCID;
    return;
    Destination = "site2";
}

这些网站位于单独的服务器上。站点1与站点2和主站点位于不同的服务器上,它们位于同一服务器上。

站点1和站点2大致相同:不同之处在于数据库连接字符串。

我的主网站使用身份验证Cookie来确保用户在转移到网站2时保持登录状态:

Private Sub AddAuthCookie(ByVal username As String)
    FormsAuthentication.Initialize()
    Dim expires As DateTime = DateTime.Now.AddDays(365)
    Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(
        1,
        username,
        DateTime.Now,
        expires,
        True,
        "AUTHCOOKIE",
        FormsAuthentication.FormsCookiePath)

    Dim encryptedTicket = FormsAuthentication.Encrypt(ticket)

    Dim authCookie As HttpCookie = New HttpCookie(
        FormsAuthentication.FormsCookieName,
        encryptedTicket)

    authCookie.Expires = expires

    Response.Cookies.Add(authCookie)

    Authenticated_hidden.Value = "True"
End Sub

我的主站点的连接字符串的身份验证部分:

<authentication mode="Forms">
    <forms name=".AUTH" loginUrl="~/Login.aspx" domain=".domain.com" enableCrossAppRedirects="true" requireSSL="false" />
</authentication>

与上述相同,除了我的两个子网站:

<authentication mode="Forms">
    <forms name=".AUTH" loginUrl="http://mysite.mydomain.com/Login.aspx" domain=".mydomain.com" enableCrossAppRedirects="true" />
</authentication>

当它传递到站点2时,这种方法很有用,站点2又与主站点位于同一服务器上。但是,当我访问网站1时,cookie无法让我登录。

所以,我的问题:

有没有比我更多使用Cookie经验的人知道这里发生了什么吗?请记住,我从其他人那里继承了这个网站:主网站和网站2之间的关系已经建立。如果需要,我可以提供更多我的代码片段。请问!

更新:机器密钥设置为固定,并且在所有三个站点上都相同。

Cookie面板的图片: enter image description here

0 个答案:

没有答案