web.config 中的 loginURL 在基于虚拟目录的页面中形成身份验证
Posted
技术标签:
【中文标题】web.config 中的 loginURL 在基于虚拟目录的页面中形成身份验证【英文标题】:loginURL in web.config forms authentication within virtual directory based page 【发布时间】:2012-01-20 20:34:17 【问题描述】:我在虚拟目录 (ASP.Net 4.0 C#) 中有一个应用程序。它通过表单身份验证进行保护。在我的应用程序中有子目录,因此我的内容树与我网站的粗略顺序相匹配
www.server.com/application/sub-directory1/sub-directory2/
<forms name=".ADAuthCookie" loginUrl="Login.aspx" slidingExpiration="true" timeout="100" defaultUrl="~/Default.aspx"/>
“loginUrl”应该是什么才能允许它在子目录中工作?即如果您的会话超时,如何让 loginUrl 将您重定向到正确的位置?
如果您将其设置为 loginUrl="~/Login.aspx" 并且您在子目录 1 中,它会将您重定向到不存在的 www.server.com/application/sub-directory1/login.aspx。我希望它始终重定向到 www.server.com/application/login.aspx
谢谢
【问题讨论】:
【参考方案1】:您是否在位于根文件夹的 web.config 文件中配置了 loginUrl?如果是这样,那应该可以。我有一个结构相似的 asp.net 3.5。当我在http://localhost/Providence /Member/Mail/NewMessage.aspx 内超时时,我被重定向到http://localhost/Providence/Login.aspx?ReturnUrl=%2fProvidence%2fMember%2fMail%2fNewMessage.aspx。
我还没有在 asp.net 4.0 上尝试过。
【讨论】:
基本上我要问的是要为 loginUrl 放什么才能做到这一点。我所做的任何事情似乎总是让我回到localhost/login.aspx 并且它不存在 这是我的设置,它可以工作: * 我只有在应用程序根目录下有一个 web.config 文件 (localhost/Providence)。 *Login.aspx 也位于应用程序根目录。 *Providence 是一个虚拟目录。<forms loginUrl="Login.aspx" timeout="60" name="XXXXX" > </form> <location path="Member"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location>
只要 web.config 文件位于网站的根目录,并且“应用程序”在 IIS 中设置为应用程序,那么您当前的配置应该可以工作。【参考方案2】:
我遇到了同样的问题,我通过删除解决了它 来自 appSettings 部分
【讨论】:
以上是关于web.config 中的 loginURL 在基于虚拟目录的页面中形成身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Web.config中的设置 forms 中的slidingExpiration的设置