在站点之间保留表单身份验证会话iis web.config

问题描述 投票:0回答:1

我有几个网站,现在需要为每个人维护相同的会话,而不必每次打开网站时都登录。

我的网站上有以下配置。

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" name=".ApplicationsManagerSessionCookie" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>

每个站点之间唯一变化的是名称属性的值。

我尝试过以下配置

  1. 删除属性名称
<authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
  1. 添加域名

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" domain="foo.com" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
  1. 添加域名和路径

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" slidingExpiration="true" domain="foo.com" path="/" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
  1. 使用相同的属性名称

    <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);
}

我该如何解决这个问题?

c# iis webforms web-config forms-authentication
1个回答
0
投票

要跨应用程序配置表单身份验证,请将 Web.config 文件的表单和 machineKey 部分的属性设置为参与共享表单身份验证的所有应用程序的相同值。

更多信息您可以参考此链接:跨应用程序的表单身份验证

© www.soinside.com 2019 - 2024. All rights reserved.