2009-08-19 148 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