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 是一个虚拟目录。 &lt;forms loginUrl="Login.aspx" timeout="60" name="XXXXX" &gt; &lt;/form&gt; &lt;location path="Member"&gt; &lt;system.web&gt; &lt;authorization&gt; &lt;deny users="?" /&gt; &lt;/authorization&gt; &lt;/system.web&gt; &lt;/location&gt; 只要 web.config 文件位于网站的根目录,并且“应用程序”在 IIS 中设置为应用程序,那么您当前的配置应该可以工作。【参考方案2】:

我遇到了同样的问题,我通过删除解决了它 来自 appSettings 部分

【讨论】:

以上是关于web.config 中的 loginURL 在基于虚拟目录的页面中形成身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Web.config中的设置 forms 中的slidingExpiration的设置

MVC系列-10.用户验证-导航条改造

在基类中创建的对象调用方法中的 PHP 类型提示

C++:如何前向声明出现在基类的静态方法中的派生类?

DAL 中的 app.config 和 Web 应用程序中的 web.config

app.config/web.config 中的变量