1

我创建了 2 个单独的 Asp.Net 应用程序。
应用 1:管理员
应用 2:报告

我们已经在 IIS 7.0 中托管了管理应用程序。现在我需要在管理应用程序中提供一个链接以链接到报告应用程序,在该链接中我不应该再次登录到报告应用程序。

现在,我在Admin App下为 IIS中的Reports创建了虚拟目录。所以我的问题是如何为这两个应用程序提供一个通用的身份验证。??注意:我正在使用表单身份验证

提前致谢

4

4 回答 4

3

你需要在配置中做三件事,并且每个应用程序必须匹配:

  • Application在成员资格和角色提供者中具有相同的属性并使用相同的数据库:和的子级的子级applicationName属性。这意味着将共享身份验证和授权数据。addprovidermembershiproleManager

  • 具有相同的密钥来加密和验证身份验证 cookie(在machineKey元素上)。(这也意味着登录将在应用程序池重新启动后继续存在,因为不会在每次应用程序启动时生成新密钥。)

  • 让两个应用程序在元素上使用相同的name属性,以便使用相同的 cookie。forms

[找到rigth属性后更新第三点。]

于 2012-08-01T13:44:37.487 回答
2

您可能需要一个应用程序而不是管理应用程序下的虚拟目录。

您需要在 web.config 中设置 enableCrossAppRedirects="true"

两个应用程序应该共享一个共同的 machineKey。这是一个生成 machineKey 的工具:http: //aspnetresources.com/tools/machineKey

示例 web.config 条目:

<authentication mode="Forms">
  <forms name=".ASPNETAUTH"
      enableCrossAppRedirects="true"
      loginUrl="Login.aspx"
      protection="All"
      path="/"
      timeout="60" />
</authentication>


<machineKey validationKey='F1D92DF9B41E5D94E79946A10494F52FF26956F256667DB52E9FA9B30E6A4FF61E4C05F1AC2795330F34B7B1389E1BD75FD0D3DCD12E991BD09B9AD004C0FE0D'
            decryptionKey='B8940FB4A776EABD1525E7D9B58E9E5DE057B2F2A67AA913'
            validation='SHA1'/>
于 2012-08-01T13:49:40.340 回答
1

我认为你应该看看PreApplicationStartMethodAttributeManaged Extensibility Framework Overview

于 2012-08-01T13:36:16.963 回答
1

关键是您需要在每个 web.config 文件中使用相同的机器密钥、验证密钥和解密密钥。

此外,请确保您的所有表单身份验证参数在每个文件中都匹配。

报告应用程序应指向管理应用程序的登录页面。

于 2012-08-01T13:37:28.017 回答