ASP.net通过检查Session在masterpage中显示LoginStatus

时间:2012-04-08 06:49:41

标签: c# asp.net logging session-state

我只想将LogIn Status文本放在MY ASP母版页中。当用户未登录时,它将显示LogIn,如果用户已logged In,则会显示LogOut。用户点击logOut后,会话将会清除。

<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状态。先感谢您。

1 个答案:

答案 0 :(得分:0)

如果您使用可以为不同角色显示不同模板的功能,

LoginView控件将使用当前请求的标识来确定它们是否已登录,以及主体的角色成员身份。因此,您将无法使用LoginView实现您的目标。与LoginStatus相同。

您可以滚动这些控件的自己版本以执行您想要的操作,或者尝试从这些控件派生您自己的控件,并简单地覆盖它在您登录时所指出的部分。

或者,您可以在母版页中放置类似的内容。

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

但是,我建议你只依靠请求的身份来确定用户是否已登录.A)它是内置的,完全支持的,你不需要做任何额外的事情B)会话不耐用。您可以通过访问User.Identity.IsAuthenticated属性来访问页面,控件等中的请求用户。