0

我有一个使用表单身份验证来验证一种用户类型的应用程序。此应用程序中有一个部分需要使用数据库中的不同表为另一种类型的用户进行身份验证。如果第二种用户的会话超时,则会出现问题,她会被带到主 Web.Config 的 Forms Authentication 部分中定义的登录页面,而不是第二种用户的登录页面。我正在寻找解决这个问题的方法。一个想法是在 IIS 中为该部分创建一个应用程序,并为该文件夹创建一个 Web.Config 并添加另一个 Forms Authentication 部分。在我的实验中,这似乎不起作用。我错过了一些明显的东西吗?有什么见解吗?

4

5 回答 5

1

IIRC,身份验证适用于每个文件夹。因此,如果需要第二种身份验证的所有页面都位于具有自己配置的特定子文件夹中,您应该能够做到这一点。

不过,这不是 100% 确定的,所以如果有更多知识渊博的人可以反驳我,我会删除回复。

于 2008-09-29T15:38:22.150 回答
1

您可能需要仔细检查我的语法,但顶级 web.config 可以有任意数量的标签。

<location>...</location> 

在里面你可以为你想要的任何文件夹/文件指定单独的配置参数。在这里寻找参考。

编辑:道歉,我忽略了正确格式化代码

于 2008-09-29T15:41:51.627 回答
0

<location> 标记内不能有 <authentication> 部分,因此必须将子文件夹设置为它自己的 IIS(和 ASP.NET)应用程序。因此,您应该能够自行运行该小节。

我认为 500.19 是“无法读取或解析 web.config”错误 - 它有详细信息吗?您可能需要打开远程错误(或检查事件查看器)才能看到它们。如果您仍然遇到问题,请发布 web.config 的片段。

顺便说一句 - 我从来都不是嵌套应用程序的粉丝,并且可能更喜欢让您的普通 Login.aspx 页面作为 MemberOf 或重定向到 SpecialUserLogin.aspx 或其他东西来处理它。嵌套应用程序是一个用于设置和测试 IME 的 PITA(例如 - 我认为你甚至不能让它在 Cassini 下工作 - 尽管你可以为它做 2 个单独的项目,并在部署时组合起来)。

于 2008-09-29T18:27:17.530 回答
0

是的你可以。Web.config 文件具有具有覆盖功能的树状继承架构。这意味着您可以通过在其中放置 web.config 文件并指定不同的配置设置来修改子文件夹中的设置。

于 2008-09-29T18:41:38.137 回答
0

我理解这个问题的方式,你有两个解决方案,第一个是查看角色,整个提供者模型将是一个很好的起点。否则,最好的办法是将应用程序分成两部分,拆分第二个用户类型区域,然后通过虚拟目录将其包含回主项目中。请记住,虚拟目录从父目录 web.config 继承其权限,因此您需要使用<Location>标签来删除虚拟目录的身份验证,然后在虚拟目录 web.config 中定义您的新表单身份验证。如果您需要在窗体身份验证下进行 Windows 身份验证 (NTLM),这将非常有效。

于 2008-09-29T19:08:00.180 回答