2012-04-08 49 views
0

我只想把LogIn Status文本在我的ASP母版頁。當沒有登錄它的用戶會顯示LogIn和用戶如果已經logged In它會顯示LogOut。一旦用戶點擊logOut,會話將被清除。ASP.net顯示LoginStatus通過檢查會話

<asp:LoginView ID="LoginView1" runat="server" onviewchanged="LoginView1_ViewChanged"> 
     <AnonymousTemplate> 
       <asp:LoginStatus ID="LoginStatus1" runat="server" LoginText="logIn" /> 
     </AnonymousTemplate> 
     <LoggedInTemplate> 
       <asp:LoginStatus ID="LoginStatus2" runat="server" LogoutText="loggedout" /> 
     </LoggedInTemplate> 
</asp:LoginView> 

我正在使用using System.Web.SessionState;來管理會話。我可以通過使用波紋管代碼來檢查用戶是否登錄。

If (Session["logged"] == true) 

請幫我根據當前會話狀態動態中顯示在母版頁LogInlogOut狀態。先謝謝你。

回答

0

LoginView控件使用當前請求的身份來確定它們是否已登錄,並且如果您使用可以爲不同角色顯示不同模板的功能,則該主體的角色成員身份。所以,你將無法達到你想要使用LoginView什麼。與LoginStatus同樣的事情。

你可以滾你自己的這些控件的版本做你想要什麼,或者嘗試從這些控件派生自己的控制,只是覆蓋在那裏計算出,如果你在或者沒有登錄的部分。

或者,你可以把你的母版頁這樣的事情。

<% if (Session["logged"] is bool && (bool)Session["logged"]) {%> 
Logged in 
%> } else { %> 
Logged out 
<% } %> 

不過,我建議你僅僅依靠請求的身份來確定。一個用戶是否登錄),它是內置的,完全支持的,你不必做任何事額外B)會議不耐用。您可以通過訪問User.Identity.IsAuthenticated屬性訪問請求的用戶在一個頁面,控制等。