【问题标题】:Cross app redirect in Forms Authentication表单身份验证中的跨应用重定向
【发布时间】:2011-03-21 15:23:57
【问题描述】:

我设计了 2 个网络应用程序并使用表单身份验证进行单点登录

Web A:包含一个Login.aspx 页面

Web B:包含一个OK.aspx 页面

当在 Web B 中访问 Ok.aspx 时,它会重定向到 Web A 中的 Login.aspx(效果很好)

但问题是当我登录成功后,无法重定向到web B中的Ok.aspx

FormsAuthentication.RedirectFromLoginPage(username,false);

它尝试在 web A 而不是 web B 中重定向到 Ok.aspx

我的<authentication> 部分:

网页A:

<authentication mode="Forms">
    <forms name="appNameAuth" 
           path="/" 
           loginUrl="login.aspx" 
           protection="All" 
           timeout="30" 
           enableCrossAppRedirects="true">
    </forms>
</authentication>

网站 B:

<authentication mode="Forms">
    <forms name="appNameAuth" 
           path="/" 
           loginUrl="webAdomain/login.aspx" 
           protection="All" 
           timeout="30" 
           enableCrossAppRedirects="true" >
    </forms>
</authentication>

有什么建议吗?

【问题讨论】:

  • 您能从两个应用程序中发布&lt;authentication&gt; 部分吗?
  • Web A:
  • Web B:
  • Web 应用程序是否在同一台服务器上并在同一个 IIS 应用程序池中运行? (我看到你在第二个例子中有“webAdomain”就是我问的原因)
  • @Raelshark:你是对的。我在同一台服务器上运行并在同一个 IIS 应用程序池中运行。 WebAdomain 类似于 10.22.33.22:8033。 WebB 中的 loginUrl 类似于 https:10.22.33.44:5555/Login.aspx。因为我希望未经身份验证的用户将被重定向到 Web A 中的登录页面

标签: asp.net redirect forms-authentication cross-application


【解决方案1】:

您可以通过在每个应用程序的 web.config 文件中设置 machineKey 值以使它们匹配来完成这项工作。

我的意思是“匹配”,从每个 web.config 中删除 IsolateApps 设置(因为这将完全按照它所说的那样做,这对你想要做的事情不利)。

接下来,您需要为decryptionKey 和validationKey 生成新值(与您选择的类型相匹配的值...SHA1 等),并将它们复制到您的每个web.configs 中

瞧!一切都应该工作

这里是关于 machineKey 设置的微软文章的链接,供参考:http://msdn.microsoft.com/en-us/library/w8h3skw9.aspx

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多