2011-07-01 23 views
1

MembershipUserクラスとMembershipProviderクラスを拡張しています。私はORMを使用しています。MembershipUserクラスの拡張

私は疑問に思っています - MembershipUserクラスにはPasswordプロパティはありませんが、パスワードを戻しパスワードを変更するメソッドなどがあります。

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

しかし、のMembershipUserは、任意のパスワードプロパティまたはフィールドを持つことが想定されていないようだし、代わりにそれはSQLを使って設定する必要があります(そうしています:私は、最初のORMのアプローチを使用して、我々は何ができる、と考えていましたクエリを作成するには)?

たMembershipUserクラスは、パスワードフィールドを持っている場合は、私がのMembershipProviderのupdatePassword方法でこのような何かを行うことができます:私の質問をより明確にするために

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

しかし、私はできない場合私はSQLを使用する必要があります:

UPDATEパスワードSET .. etcなど...私は取得することはできませんし、データベースからオブジェクトを変更する必要があるフィールドを持っていないオブジェクトを変更する(パスワードフィールドなど)。

答えて

1

私は操作可能なすべての仮想フィールドを持つMembershipUserの周りにラッパークラスを作成しました。 MembershipProviderメソッドを満たすToMembershipUserメソッドを作成しました。

1

独自のMembershipUserクラスの派生物を作成する場合は、既に独自のMembershipProviderを作成することを検討している必要があります。

正確な質問は不明ですが、独自のメンバーシッププロバイダを実装する場合は、カスタム "MembershipUser"インスタンスをインスタンス化してユーザーに使用させる "検証"および "GetUser"メソッドを(主に)実装する必要があります。

+0

はい、これらのメソッドの中には、MembershipUserにパスワードプロパティがないため、ORMアプローチと同様に、データベースからMembershipUserオブジェクトを取得できません。 – BobTurbo

+1

必要に応じてパスワードプロパティを追加できますが、認証方法を再考する必要があります。通常、実際のパスワードが必要な接続オブジェクトが必要な場合は、パスワードを「手持ち」にして、それをアプリケーションの残りの部分にアクセスできる場所に配置して、Validateメソッドの実行中または間もなく構築します。 –