Question

Je construis un MembershipProvider personnalisé plus précisément la fonction GetUser.

i ont un marché avoisinant MembershipUser personnalisé.

public class CustomMemberShipUser : MembershipUser
{
    public CustomMemberShipUser (
        string providerName,
        string email,
        object providerUserKey,
        string name,
        string passwordQuestion,
        string comment,
        bool isApproved,
        bool isLockedOut,
        DateTime creationDate,
        DateTime lastLoginDate,
        DateTime lastActivityDate,
        DateTime lastPasswordChangedDate,
        DateTime lastLockoutDate
        ): base(
            providerName, email, providerUserKey, name, passwordQuestion,
            comment, isApproved, isLockedOut, creationDate, lastLoginDate,
            lastActivityDate, lastPasswordChangedDate, lastLockoutDate)
    {
    }
}

Dans la fonction GetUser du MembershipProvider i obtenir les données utilisateur et les mettre dans le CustomMemberShipUser.

public override MembershipUser GetUser(string email, bool userIsOnline)
    {
        User u = _db.Users.Where(x => x.Email == email).First();
        CustomMemberShipUser customUser = new CustomMemberShipUser (
                                        "CustomMemberShipUser ",
                                        u.Email, 
                                        u.id,
                                        u.Email, 
                                        "", 
                                        "", 
                                        true, 
                                        false, 
                                        u.CreateDate, 
                                        DateTime.MinValue, 
                                        DateTime.MinValue, 
                                        DateTime.MinValue, 
                                        DateTime.MinValue);
        return customUser ;
    }

Comme vous pouvez le voir j'utiliser l'e-mail comme nom pour les membres et je ne ont pas besoin la plupart des autres paramètres.

Y at-il un moyen de rendre l'appel plus simple? Je ne veux pas l'initialiser MembershipUser avec des chaînes vides et les valeurs minimales date.

Merci à l'avance

Était-ce utile?

La solution

Pouvez-vous adapter votre CustomMembershipUser pour faire le « padding » pour vous

   public class CustomMemberShipUser : MembershipUser
    {
        public CustomMemberShipUser (
            string email,
            object providerUserKey,
            ): base(
                "CustomMemberShipUser", email, providerUserKey, email, String.Empty,
                String.Empty, true, false, DateTime.MinValue, DateTime.MinValue,
                DateTime.MinValue, DateTime.MinValue, DateTime.MinValue)
        {
        }
    }

Il ne résout pas le problème, mais il ranger votre fournisseur qui deviendra

public override MembershipUser GetUser(string email, bool userIsOnline)
    {
        User u = _db.Users.Where(x => x.Email == email).First();
        CustomMemberShipUser customUser = new CustomMemberShipUser (u.Email, u.id);
        return customUser ;
    }

Je suppose que votre CustomMembershipUser expose quelques propriétés supplémentaires que vous ne nous montrez. Comme il vous se pourrait que renvoyer une MembershipUser. Avec ce qui précède le seul avantage de votre CustomMembershipUser vous donne est la construction de nettoyage dans votre CustomMembershipProvider

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top