0

App_Data我创建了一个新的 ASP.NET、C# 空网站,文件夹中有我自己的数据库。我在解决方案中也有一个母版页。

无论如何,我想创建一个登录页面,但我的问题是,在浏览网站时如何知道用户是否登录。

更详细地说,当用户打开主页时,它会有一个标签,上面写着“登录”并链接到/login.aspx

但是当用户登录时,我希望顶部的“登录”标签更改为Username+ a "Logout" label(这当然会注销用户)。

我的问题是,假设我转到另一个页面,比如说/AboutUs.aspx,我怎么知道是否有人登录以及谁登录了?

我用谷歌搜索了很多,看到了很多解决方案,包括Membership Providerand LoginView,但我都不理解它们(是的,我读过很多文章;甚至 MSDN 文章)。

我真的不习惯用 ASP.NET 编程。

请提供任何帮助!谢谢!

4

2 回答 2

1

如您所说,如果您使用自己的数据库来存储用户名和密码,则需要自己处理身份验证过程。最简单的方法是通过继承 System.Web.Security.MembershipProvider 类并重写基本方法(如 bool ValidateUser(string userName, string password))来编写自己的 Membership 提供程序。然后,您需要通过 web.config 将您的提供商插入您的网站。

另一方面,您可以使用内置的 Membership 提供程序及其数据库。为此,您需要将用户数据复制到此数据库中,该数据库将在您的应用程序第一次使用会员功能时创建(例如,在 VS 中执行 PROJECT -> ASP.NET 配置菜单命令时)。它的名称和位置取决于 web.config 中的连接字符串。如果您选择使用这种方式,一旦您的用户通过身份验证,您将能够在服务器端使用以下代码看到它:

User.Identity.IsAuthenticated
于 2012-06-03T12:02:46.053 回答
1

在 ASP.NET 中,我建议使用 Forms 身份验证。 http://msdn.microsoft.com/en-us/library/ff647070.aspx

当用户登录时,用户会话中会有一个 IIdentity 对象,您可以使用该对象来确定用户是否已通过身份验证。但是,您实际上并不需要太多使用它,因为 web.config 将被配置为将所有未经身份验证的用户扔回您的登录页面。

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Login.aspx"
           protection="All"
           timeout="30"
           name=".ASPXAUTH" 
           path="/"
           requireSSL="false"
           slidingExpiration="true"
           defaultUrl="default.aspx"
           cookieless="UseDeviceProfile"
           enableCrossAppRedirects="false" />
  </authentication>
</system.web>

<system.web>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>
于 2012-06-03T11:30:10.933 回答