0

我正在为 ASP.NET 中的测试和论坛开发一个网站。我想在整个网站上保持用户登录状态,直到用户注销。用户可以随时登录,不需要在打开网站的时候登录。我有这么多页面,所以有没有简单的方法来检查天气用户是否在每个页面上登录并在每个页面上相应地显示他的状态。

请帮助解决我的问题。

谢谢。

4

3 回答 3

0

你可以使用SESSION相同的。

很好的解释,这里有很好的例子。

于 2013-03-31T06:06:05.863 回答
0

如果您是 asp.net 的新手,您可以为此目的使用 session。

当用户单击登录按钮时,只需保存用户 ID 或用户名或您在会话中想要的任何内容。

在登录按钮上

  Session["User"] = username.ToString();
   //you will get user id or username from the database. you can store anything in this session. its your wish.

现在在母版页的页面加载中只需检查 Session 是否存在。因为每当内容页面回发时,母版页的页面加载都会触发。

母版页上的 OnPageload:

If(Session["user"] != null) // it should be first statement in page load event
{
  //your code
}

在注销按钮上,只需删除会话或将会话值设置为 null。

它是维护用户登录的最简单且无需代码的方式。

于 2013-03-31T06:24:40.840 回答
0

您需要实现 ASP.NET 成员资格。会员资格基本上会迅速创建一个安全系统,而您无需创建自己的。

搜索它以找到大量资源,自 ASP.NET 2.0 以来并没有太大变化。例如,http://www.troyhunt.com/2011/10/5-minute-wonders-aspnet-membership.html

这将很快让您拥有安全的部分和用户权限。

就您的实际问题而言,确定某人是否登录的唯一机制是使用 ASP.NET Membership。您可以使用 Windows 身份验证,但如果没有额外的工作,您将无法轻松获取用户信息,例如他们的姓名。

如果您使用 ASP.NET Membership 路由,您将使用表单身份验证,这将有两种状态,匿名(未登录)和登录。

要显示某人已登录,您将使用该LoginView控件。http://www.codeguru.com/csharp/csharp/cs_misc/security/article.php/c13127/ASPNET-Tip-Using-the-LoginView-Control.htm

<asp:LoginView ID="ctlRightNavbar" runat="server">
    <AnonymousTemplate>
        Not logged in
    </AnonymousTemplate>
    <LoggedInTemplate>
        Welcome <asp:Label ID="lblName" runat="server" />
    </LoggedInTemplate>
</asp:LoginView>

在后面的代码中,您将使用 Membership 详细信息来获取用户信息,特别是使用MembershipUser类。

// get the logged in user
MembershipUser user = Membership.GetUser();
// user will be null if not logged in
if (user != null)
    // display the user details
    lblName.Text = user.UserName;
于 2013-03-31T06:31:11.673 回答