4

我在 Azure 网站上有两个网站,我使用 CNAME 将它们与我自己的域名一起使用。

我们将这两个站点称为 site1.example.com 和 site2.example.com。

我正在使用 ASP.NET MVC 4 和 SimpleMembership。我希望用户能够登录 site1.example.com,并让 site2.example.com 接受该登录状态。

这是我到目前为止所做的:

  • site1 和 site2 都指向同一个成员数据库(web.config 中的连接字符串设置相同,并且 InitializeSimpleMembershipAttribute 设置为查看该连接字符串)
  • 我已将 cookie 域设置为 .example.com(在 web.config、system.web 身份验证部分)
  • 我已手动将 system.web 配置中的 machineKey 设置为两个站点的相同内容

但是,如果我在 site1 上登录,那么我没有在 site2 上登录。我可以看到 .ASPXAUTH cookie 已在 .example.com 上正确设置,因此两者都可见。

那么,我错过了什么?

4

1 回答 1

0

如果您使用 AJAX 请求登录(例如通过 Web API),请尝试包含

xhrFields: { withCredentials: true }

就像是

$.ajax({ method: 'POST',
        url: 'yourloginurl.com/api/login',
        xhrFields: { withCredentials: true }, 
        success: function (data) { ... } });

在 httpCookie 上设置域后。

我花了一天时间找到这个解决方案,这解决了我的问题。

于 2014-12-18T12:01:29.753 回答