在我们的项目中,我们为用户提供类似子域名的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();
毕竟我还不知道如何为自定义域名实现跨域身份验证。是否有可能在某些域之间共享特定服务器的身份验证数据?或者,如果我知道域名和机器密钥,我可以在服务器端检索此信息吗?
答案 0 :(得分:1)
解决方法是在“主域”中设置客户端设置的localstorage中的用户信息,然后设置子域创建的cookie,但是对于所有的进入/退出操作,您将不得不使用“主域” “你可以搜索stakoverflow和所有兄弟姐妹网站是如何工作的,因为他们正在使用SSO解决这个问题,无论如何,this post可能会帮助你。
修改
有关SO如何解决auto login问题
的更多信息