我有几个网站,现在需要为每个人维护相同的会话,而不必每次打开网站时都登录。
我的网站上有以下配置。
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" name=".ApplicationsManagerSessionCookie" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
每个站点之间唯一变化的是名称属性的值。
我尝试过以下配置
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" domain="foo.com" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" domain="foo.com" path="/" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" name="._SessionCookie" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
值得一提的是,该应用程序是asp.net webforms
登录.aspx.cs
if (string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
{
FormsAuthentication.SetAuthCookie(_key.User, false); //guardamos el login
Response.Redirect("~", false); //redireccionamos a la pagina principal
}
else
{
FormsAuthentication.RedirectFromLoginPage(_key.User, false);
}
我该如何解决这个问题?
要跨应用程序配置表单身份验证,请将 Web.config 文件的表单和 machineKey 部分的属性设置为参与共享表单身份验证的所有应用程序的相同值。
更多信息您可以参考此链接:跨应用程序的表单身份验证。