我有两个子域名,比如b1.abc.com和s1.abc.com。我正在使用表单身份验证实现单点登录,但它似乎没有按预期工作。我想要的是,如果用户在b1.abc.com中登录然后打开s1.abc.com的主页(比如在另一个选项卡中),那么他就不应该被重定向回登录页面,而是登录他在,并显示他的主页。
截至目前,当我登录b1.abc.com然后打开s1.abc.com时,它不会进行身份验证并重定向到登录页面。
以下是我的代码。
在app的登录按钮点击事件中:
FormsAuthentication.SetAuthCookie(txtUserName.Text, true);
System.Web.HttpCookie MyCookie = System.Web.Security.FormsAuthentication.GetAuthCookie(User.Identity.Name.ToString(), true);
MyCookie.Domain = "abc.com";
Response.AppendCookie(MyCookie);
Response.Redirect("Home.aspx", false);
Context.ApplicationInstance.CompleteRequest();
然后在两个应用程序的home.aspx页面中,我检查如下:
bool isLoggedIn = ((System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated);
if (!isLoggedIn)
{
FormsAuthentication.RedirectToLoginPage();
return;
}
在web.config中,我有以下设置:
<authentication mode="Forms">
<forms name="Authent" protection="All" timeout="60" loginUrl="Login.aspx" defaultUrl="Home.aspx" path="/" enableCrossAppRedirects="true" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
注意:我尝试使用点(.abc.com)提供cookie的域名,但它没有用。