0

我只想将LogIn Status文本放在我的 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状态。先感谢您。

4

1 回答 1

0

LoginView控制使用当前请求的身份来确定他们是否已登录,以及主体的角色成员资格,如果您使用可以为不同角色显示不同模板的功能。因此,您将无法使用LoginView. 与LoginStatus.

你可以滚动你自己版本的这些控件来做你想做的事情,或者尝试从这些控件中派生出你自己的控件,并简单地覆盖它确定你是否登录的部分。

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

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

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

于 2012-04-08T07:02:37.993 回答