我们可以使用Forms身份验证在另一个应用程序中使用自己的Web.config和Forms Authentication部分创建一个应用程序吗?

时间:2008-09-29 15:32:24

标签: asp.net .net forms-authentication

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

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

<location>...</location> 

在里面你可以为你想要的任何文件夹/文件指定单独的配置参数。查看here以获取参考。

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

答案 2 :(得分:0)

您不能拥有&lt; authentication&gt; &lt; location&gt;内的部分标记,因此您必须将子文件夹设置为它自己的IIS(和ASP.NET)应用程序。所以,你应该能够自己运行这个小节。

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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