gpt4 book ai didi

ASP.NET 中的 Membership、MembershipProvider 和 MembershipUser 关系?

转载 作者:行者123 更新时间:2023-12-04 07:30:28 25 4
gpt4 key购买 nike

我将用户数据存储在名为 Users 的 MSSQL 表中。我想要的是能够访问实际登录用户的所有用户数据(电子邮件、地址、电话,如果用户是订阅者等)。

我不想使用配置文件,所以我决定使用自定义 MembershipProvider(或者你知道一些更好的、不那么痛苦的方法吗?)。

我不明白的是 MembershipUser 和 Membership。
如果我从 MembershipProvider 继承,则在覆盖方法中我控制来自和向数据库的访问数据。

但是如何使用从 MembershipProvider 继承的类?
如果我想使用成员(member)身份验证用户,我应该这样做:

if(Membership.ValidateUser(string username, string password))
{
FormsAuthentication.RedirectFromLoginPage(string username, string password);
}

但是从 MembershipProvider 继承的类在哪里?何时使用从 MembershipUser 继承的类? Membership 和 MembershipProvider 之间是什么关系?

最佳答案

虽然不是很清楚on MSDN ,其实没那么复杂。有三个类:

  • 成员资格:提供实用方法和入口点——基本上是单例(静态类)。
  • MembershipProvider:充当 MembershipUser 对象的数据访问器和工厂。
  • MembershipUser:代表个人用户。

  • 根据您的应用程序配置选择自定义 MembershipProvider(通过 Membership 中的代码):configuration/system.web/membership。在这里,您可以让您的提供商发挥作用。您必须编写 MembershipProvider 实现以访问您喜欢为用户提供的任何数据存储:在这种情况下是您的 User 表。

    MembershipUser 对象只能通过您的 MembershipProvider 创建。 MembershipProvider.ValidateUser() 方法应该根据您的数据存储检查用户/密码组合是否有效。 MembershipProvider.GetUser() 检索用户信息——在受访问保护的页面中使用它,并将 System.Web.HttpContext.Current.User.Identity.Name 作为当前经过身份验证的用户传入。

    这就是说,我希望你确定你不想 use Profiles ,真的很想有一个单独的用户表。如果您正在编写内部应用程序,请使用现有的 Active DirectoryLDAP启用数据存储将降低管理成本和可能的安全风险。使用 MembershipProvider 路线时,您很容易做错数百件事。你用吗 salted hashes ?您如何保护 User 表免受操纵? MSDN 只涵盖了 security issues 的一小部分你可能会面临。

    关于ASP.NET 中的 Membership、MembershipProvider 和 MembershipUser 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628137/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com