2009-08-19 140 views
1

嗨同胞堆栈...我有一个ASP.NET 3.5应用程序使用表单身份验证。我想请求一个仅可用于经过身份验证的用户的页面,但能够在某些情况下将其显示给未经身份验证的用户。我的问题是,我需要告诉ASP.NET页面生命周期的哪一点是可以显示该页面的,以及如何告诉它这样做。避免身份验证

我已经试过这无济于事:

void Application_AuthenticateRequest(Object sender, EventArgs e) 
{ 
    HttpContext.Current.SkipAuthorization = true; 
} 

当然,上面的例子是仅用于测试目的

+0

我避免直接​​与我自己的身份验证模型搞乱。您可以将表单的第二个副本放在非安全目录中吗? – 2009-08-19 21:03:02

回答

0

我不确定你的意思是“试图无果”。究竟发生了什么?如果您使用BeginRequestAuthenticateRequest(仅在AuthorizeRequest之前发生的唯一两个请求管道事件)操作当前HTTP上下文以跳过授权,它将绕过web.config文件中允许或拒绝用户的任何授权设置。

您目前如何授权您对请求页面的请求?

+0

我的意思是“试图无果”是它没有工作。它一直将我重定向到登录页面。我会尝试使用BeginRequest事件 – 2009-08-19 22:32:46

+0

好吧,事实证明,我们的基类正在做一些检查,并将重定向到Login.aspx。问题不在于ASP.NET,我上面提供的代码完美地工作。我在BeginRequest和AuthenticateRequest中都尝试过,他们都工作。 感谢您的帮助 – 2009-08-19 22:43:03

2

在页面加载你为什么不使用:

if (Page.User.Identity.IsAuthenticated){ 
     //your code for logged in users. 
} else { 

    // if not logged in. 
} 

并把页面放在一个不安全的目录中。

+0

由于该页面被设置为不允许匿名用户通过ASP.NET,我们想继续使用它的方式 – 2009-08-19 22:30:45