【问题标题】:Extending the MembershipUser class扩展 MembershipUser 类
【发布时间】:2011-07-01 05:27:11
【问题描述】:

我正在扩展 MembershipUser 和 MembershipProvider 类。我正在使用 ORM。

我想知道 - MembershipUser 类没有 Password 属性,但是有一些方法可以返回其密码并更改其密码等等。我首先想到的是,使用 ORM 方法,我们可以这样做:

user.password = newPassword;
session.commit();

但似乎 MembershipUser 不应该有任何密码属性或字段,而是必须通过 SQL 设置(因此必须创建查询)?

为了让我的问题更清楚:

如果 MembershipUser 类有密码字段,我可以在 MembershipProvider 的 updatePassword 方法中做这样的事情:

User user = from database.getUser(username, oldpassword);
user.password = newPassword;
session.commit();

但如果我不能有密码字段,我必须使用 SQL:

UPDATE password SET.. etc etc...因为我无法从数据库中获取和更改 OBJECTS,因为对象没有我需要更改的字段(例如密码字段)。

【问题讨论】:

    标签: orm membership-provider


    【解决方案1】:

    如果您正在创建自己的 MembershipUser 派生类,您应该已经在考虑创建自己的 MembershipProvider。

    您的确切问题尚不清楚,但如果您实现自己的成员资格提供程序,则需要(主要)实现它们的“Validate”和“GetUser”方法,这将允许您实例化和使用您的自定义 MembershipUser 实例。

    【讨论】:

    • 是的,但是在这些方法中,我无法像 ORM 方法那样从数据库中获取 MembershipUser 对象,因为 MembershipUser 没有密码属性。
    • 您可以根据需要添加密码属性,但您应该重新考虑您的身份验证方法。通常,如果我需要一个需要实际密码的连接对象,我会在 Validate 方法期间或之后不久构造它,此时我有密码“在手”,并将其放在应用程序其余部分可访问的位置。
    【解决方案2】:

    我最终围绕 MembershipUser 创建了一个包装类,其中包含所有可以操作的虚拟字段。我创建了一个 ToMembershipUser 方法来满足 MembershipProvider 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多