Лучший подход: установить / изменить пароль - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть usercontrol, который отвечает за представление создания и смены пользователей.Пользовательский контроль привязан к объекту, предоставленному службой RIA:

[MetadataType(typeof(User.UserMetadata))]
public partial class User
{
    internal class UserMetadata
    {
        protected UserMetadata() {}

        [Required]
        public string Name { get; set; }

        [Exclude]
        public string PasswordHash { get; set; }

        [Exclude]
        public int PasswordSalt { get; set; }

        [Required]
        public string ShortName { get; set; }

        [Include]
        public IEnumerable<UserRole> UserRoles { get; set; }
    }

    [DataMember]
    [RegularExpression("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName = "BadPasswordStrength", ErrorMessageResourceType = typeof(ErrorResources))]
    [StringLength(25, MinimumLength = 6)]
    public string NewPassword { get; set; }
}

При создании нового пользователя поле "NewPassword" обязательно, но при изменении свойств существующего пользователя оно неиспользуется для смены пароля).

Каков наилучший подход для решения этой проблемы?У меня есть несколько идей, но все они кажутся немного глупыми: -)

Спасибо

1 Ответ

1 голос
/ 13 сентября 2010

Похоже, вы передаете свои текущие пароли обратно в графический интерфейс. Нет необходимости когда-либо это делать. Это создаст потенциальную дыру в безопасности

Предложите вам рассматривать изменение пароля как отдельный сервисный вызов, а не как простое упражнение по редактированию записей. Службы RIA поддерживают Операции вызова , которые в основном являются произвольными прямыми вызовами к вашей службе RIA. Единственное ограничение на операции Invoke состоит в том, что они не могут возвращать сложные типы (в данном примере это не проблема).

Передайте свой текущий зарегистрированный идентификатор пользователя , текущий пароль (в кодировке) и новый пароль (в кодировке) и выполните всю работу на стороне сервера. Вернуть логическое значение простого успеха.

Просто несколько предложений, я рад видеть идеи других людей об этом:)

...