tumblr就像mvc3中的自定义域名跨域身份验证一样

时间:2013-10-01 10:53:08

标签: asp.net-mvc-3 authentication web-config

在我们的项目中,我们为用户提供类似子域名的tumblr以及“mydomain.com”等自定义域名。所以我有一个相同的服务器和一个应用程序,但有不同的域名。

dns和路由一切正常,但我遇到了身份验证问题。只需在Web配置中指定机器密钥和域名即可解决主域和子域的共享身份验证。

    <authentication mode="Forms">
          <forms domain="xxx.com" loginUrl="~/account/logon" timeout="2880" />
    </authentication>

但是在这种情况下我遇到了“注销”问题,所以即使我添加了这些代码行(我找到了这个问题的所有解决方案)之后,Signing Out也无法正常工作:

    formsAuthentication.SingOut();
    Session.Abandon();
    HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
    cookie1.Expires = DateTime.Now.AddYears(-1);
    Response.Cookies.Add(cookie1);
    HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
    cookie2.Expires = DateTime.Now.AddYears(-1);
    Response.Cookies.Add(cookie2);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetNoStore();

毕竟我还不知道如何为自定义域名实现跨域身份验证。是否有可能在某些域之间共享特定服务器的身份验证数据?或者,如果我知道域名和机器密钥,我可以在服务器端检索此信息吗?

1 个答案:

答案 0 :(得分:1)

解决方法是在“主域”中设置客户端设置的localstorage中的用户信息,然后设置子域创建的cookie,但是对于所有的进入/退出操作,您将不得不使用“主域” “你可以搜索stakoverflow和所有兄弟姐妹网站是如何工作的,因为他们正在使用SSO解决这个问题,无论如何,this post可能会帮助你。

修改

有关SO如何解决auto login问题

的更多信息