我创建了 2 个单独的 Asp.Net 应用程序。
应用 1:管理员
应用 2:报告
我们已经在 IIS 7.0 中托管了管理应用程序。现在我需要在管理应用程序中提供一个链接以链接到报告应用程序,在该链接中我不应该再次登录到报告应用程序。
现在,我在Admin App下为 IIS中的Reports创建了虚拟目录。所以我的问题是如何为这两个应用程序提供一个通用的身份验证。??注意:我正在使用表单身份验证
提前致谢
你需要在配置中做三件事,并且每个应用程序必须匹配:
Application
在成员资格和角色提供者中具有相同的属性并使用相同的数据库:和的子级的子级applicationName
属性。这意味着将共享身份验证和授权数据。add
provider
membership
roleManager
具有相同的密钥来加密和验证身份验证 cookie(在machineKey
元素上)。(这也意味着登录将在应用程序池重新启动后继续存在,因为不会在每次应用程序启动时生成新密钥。)
让两个应用程序在元素上使用相同的name
属性,以便使用相同的 cookie。forms
[找到rigth属性后更新第三点。]
您可能需要一个应用程序而不是管理应用程序下的虚拟目录。
您需要在 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'/>
关键是您需要在每个 web.config 文件中使用相同的机器密钥、验证密钥和解密密钥。
此外,请确保您的所有表单身份验证参数在每个文件中都匹配。
报告应用程序应指向管理应用程序的登录页面。