2014-01-22 217 views
0

我目前正在創建一個Web應用程序,出於安全原因,我必須將匿名用戶重定向到登錄頁面。做一些研究之前,這裏是我有我的Site.Master頁:登錄註銷混淆(重定向到登錄頁面,如果未登錄)

[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/Logout.aspx"/> ] 

,你可以看到,我已經創建了包含註銷代碼,FormsAuthentication.Signout和這樣的我自己的註銷頁面。在這個調用這個頁面的siteMap中還有一個Logout鏈接。

今天早上一切都很好。當我點擊LoginStatus中的註銷鏈接時,註銷工作正常。我點擊我的網站地圖中的註銷鏈接,註銷工作正常。我試着立即再次登錄,應用程序將我重定向到默認頁面。但是,當我在這裏Web.config添加這段代碼:

<authorization> 
    <deny users="?"/> 
</authorization> 

奇怪的事情發生了。我點擊LoginStatus中的註銷鏈接,該應用將我重定向到登錄頁面,而不是註銷頁面。更重要的是,當我嘗試再次登錄時,該應用程序會將我重定向到註銷頁面。這使我必須登錄TWICE只是爲了能夠再次回到應用程序。

爲什麼/這是怎麼發生的?任何見解將不勝感激。

回答

0

這是因爲您拒絕訪問未經過身份驗證的用戶訪問您網站中的所有頁面。您需要爲可以未經身份驗證的頁面添加排除項。

例如 - 授予訪問主頁的任何用戶: -

<location path="home.aspx"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 

一些導遊在這裏: -

http://www.codeproject.com/Articles/667473/ASP-NET-WebConfig-Location-and-Authroization-Tags

http://www.c-sharpcorner.com/UploadFile/prg.apv/usage-of-location-tag-in-Asp-Net-application/

+0

怎麼做呢?如果你可以建議一種方法或什麼的,它將不勝感激。 – JamesP

+0

查看我編輯的回覆James – sh1rts

相關問題