0

独自のメンバーシップ プロバイダーを実装しています。リポジトリ パターンを使用しました。

public interface IMembershipService: IDisposable
{
    void CreateUser(string username, string password, string email, string role);
    bool CheckUsernameExist(string username);
    string EncodePassword(string originalPassword,string salt);
    // Some other my admin methods
}
public class MembershipService : IMembershipService
{
    public MembershipService()
    {
    }
    public void ActivateUserAccount(string username, string email)
    {
        // Some validation code
    }
    public void CreateUser(string username, string password, string email, string role)
    {
        // Some validation code
    }
   }

私はMembershipProviderを継承していません。今、現在ログインしているユーザーを返す GetUser() を実装する方法を知りたいのですが、それについてはわかりません。次に、MembershipProvider を継承することで、GetUser() やその他の便利なメソッドを使用できますか? そのクラスも継承できませんでした。この質問への回答が私にとって最も重要なので、私を導き、反対票を投じないでください。ありがとう

4

3 に答える 3

0

あなたは正しい道を進んでいます。今しなければならないことは、MembershipService両方IMembershipServiceの道具を用意MembershipProviderすることです。そうすれば、次のことができます。

public class MembershipService : MembershipProvider, IMembershipService
{
    private readonly IUserRepository _userRep; // or whatever you are calling your user repository

    public MembershipService()
       : this(DependencyResolver.Current.GetService<IUserRepository>())
    {
    }

    public MembershipService(IUserRepository userRep)
    {
       this._userRep = userRep;
    }

    public override MembershipUser GetUser(string username, bool userIsOnline)
    {
    ...

インターフェイスは、使用する予定IMembershipServiceのすべてのクラスを実装する必要があります。MembershipProviderその後、コントローラーに挿入できIMembershipServiceます。

于 2013-06-13T15:17:33.687 に答える