ASP.NET MVC Fournisseur d'appartenances Personnalisé “CreateUser”

J'ai mis en place quelques de base, fournisseur d'appartenances personnalisé pour mon ASP.NET application MVC donc j'ai pensé que toute la validation sera faite dans mon code personnalisé.

Malheureusement, lorsque j'essaie de créer un nouvel utilisateur en appelant la fonction:

Membership.CreateUser(user.UserName, user.Password, user.Email, null, null, true, Guid.NewGuid(), out status);

qui devrait finalement lancer une exception avec toutes les erreurs de validation je suis un statut comme "InvalidUserName" ou "InvalidPassword" à la place... ce Qui signifie que mon custom CreateUser fonction n'est pas de l'appeler directement, il est utilisé après un certain validation de base qui je voudrais sauter.

Ma fonction CreateUser (à mon fournisseur personnalisé):

public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
    try
    {

        User user = new User();
        user.UserKey = Guid.NewGuid();
        user.UserName = username;
        user.passwordSalt = string.Empty;
        user.Password = this.TransformPassword(password, ref user.passwordSalt);
        user.Email = email;
        user.PasswordQuestion = passwordQuestion;
        user.PasswordAnswer = passwordAnswer;
        user.CreationDate = DateTime.Now;
        user.LastActivityDate = DateTime.Now;
        user.LastLoginDate = DateTime.MinValue;
        user.LastPasswordChangeDate = DateTime.Now;

        this._UsersRepository.SaveUser(user);

        status = MembershipCreateStatus.Success;
        return CreateMembershipFromInternalUser(user);


    }
    catch(RuleException ex)
    {
        throw ex;
    }
}

Savez-vous comment faire respecter l'utilisation directe de la coutume fonction CreateUser !?


Mais je ne suis pas en utilisant une valeur par défaut ASP.NET MVC du projet AccountController...

Il suffit de prendre un coup d'oeil:

[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Register(User user, string password_confirm, bool acceptsTerms)
{
    if (!acceptsTerms)
        ModelState.AddModelError("acceptsTerms", "Musisz zaakceptować regulamin");

    if (ModelState.IsValid)
    {
        try
        {
            MembershipCreateStatus status = new MembershipCreateStatus();
            Membership.CreateUser(user.UserName, user.Password, user.Email, null, null, true, Guid.NewGuid(), out status);
        }
        catch (RuleException ex){
            ex.CopyToModelState(ModelState,"user");
        }
    }

    return View();
}

Le point est que je suis l'obtention d'un statut plutôt que de RuleException ex lorsque l'utilisateur.Nom d'utilisateur ou l'utilisateur.Le mot de passe est vide. Mon custom RuleException ex me redonner ces informations, ainsi. D'où un statut de valeur est affectée en ce moment !? Bacouse il n'est pas fait dans ma mise en œuvre de CreateUser...

InformationsquelleAutor Kotu | 2010-01-10