如何禁用表单身份验证

问题描述:

我在我的网站中使用基于表单的身份验证来保护其中的文件夹。我现在必须在该文件夹中开发两个新页面,并且在测试和调试新窗体时我想关闭安全性。我已将网站的web.config文件中的身份验证模式更改为mode =“None”,并且已从受保护的文件夹中删除了web.config文件。我删除了浏览器中的所有cookie,但是当我从该文件夹加载页面时,仍然被重新路由到登录页面。如何禁用表单身份验证

如何暂时禁用网站中的表单身份验证?

9/25/2009 - 我在根web.config文件中设置了窗体身份验证=“无”。我从表单身份验证已经实现的两个子文件夹中删除了web.config文件。我清除了缓存并删除了Cookie。仍然要求我登录才能查看文件夹中的页面。我导航到一台以前从未去过的机器上的页面,并被要求在那里登录。这被缓存在服务器上不会放过的网站的某处。

将authenticode设置为none应该这样做。一定有你缺少的东西,你确定你正在浏览你更新的部署代码吗?

+0

右键单击 - 在浏览器中查看。 – pthalacker 2009-09-16 17:21:44

+0

我确定我错过了一些东西。这就是为什么我发布的问题 – pthalacker 2009-09-16 17:24:12

您可以使用位置标记在web.config为担保目录overidde安全对这些页面:

<location path="secureddir/newform.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

http://msdn.microsoft.com/en-us/library/b6x6shw7.aspx

尝试添加以下信息到您的web.config。这将从所需授权中删除路径中的项目。

<location path="XXXXXXXXX"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
+0

我试过这个,没有喜悦。我再次尝试没有路径属性MSDN说将适用于当前目录和所有子目录,仍然没有喜悦。我尝试添加用户=“?”也依然没有喜乐。 – pthalacker 2009-09-16 17:23:25

我有这个问题之前 - 这可能不属于你,但我会提到,这是导致我的认证形式,以保持上来的内存中的cookie。我通过尝试不同的浏览器,即FF,Chrome,而不是IE浏览器发现。

+0

我正在使用FireFox作为默认设置。我只是尝试使用开发服务器IIS而不是本地主机在IE中打开其中一个页面。仍然没有快乐。 – pthalacker 2009-09-16 18:51:24

+0

也许在根和受保护的文件夹之间有一个中间配置文件? 或者web.config文件指向另一个用于身份验证的配置文件: 或者machine.config身份验证部分以某种方式被使用? 或者在global.asax中有一些自定义身份验证? – Steve 2009-09-17 12:39:32

+0

Global.asx中的唯一一件事是404错误的陷阱。 web.config中没有configSource。据我所知,没有人碰过machine.config,所以它应该处于原始的默认状态。 只有三个web.config文件 - 一个在根目录中,一个在Secure文件夹中,我将所有登录和用户管理页面放在一个包含需要安全访问的内容的文件夹中。您是否说一个文件夹中的web.config文件可能会影响对等文件夹的行为?这将是讨厌的。 - pamela – pthalacker 2009-09-18 13:46:15

您可能有一个正在调用FormsAuthentication.RedirectToLoginPage()的页面(或基类或主页面);

+0

我所有的身份验证重定向都是使用web.config文件开始的。唯一的重定向来自Logout.aspx页面。没有任何课程或母版页与安全性有关。 – pthalacker 2009-09-18 21:18:35

尝试删除模式=“XXXX”从鉴定节点,并发表评论授权节点

我希望能够在整个应用内停用认证,同时调试,所以我做了以下内容:

1)创建了这个类。

namespace System.Web.Mvc 
{ 
    public class SwitchableAuthorizeAttribute : AuthorizeAttribute 
    { 
     public static bool Enabled = true; 

     public override void OnAuthorization(AuthorizationContext filterContext) 
     { 
      if (Enabled) 
      { 
       base.OnAuthorization(filterContext); 
      } 
     } 
    } 
} 

2)与[SwitchableAuthorize]整个申请取代了[授权]属性。

3)需要时关闭授权。例如,添加以下到App_Start/AuthConfig.cs:

public static class AuthConfig 
{ 
    public static void RegisterAuth() 
    { 
     #if DEBUG 
     SwitchableAuthorizeAttribute = false; 
     #endif 

     ...   
    } 
} 

你可能有比DEBUG的其他条件。这种方法将允许您随时以编程方式启用/禁用授权。

如果您的页面需要登录用户信息,则可以通过执行一些虚假登录而不是简单地跳过base.OnAuthorization()来增强此方法。