最佳方法:设置/更改密码对话框

时间:2010-09-13 14:21:06

标签: silverlight silverlight-4.0 wcf-ria-services

我有一个usercontrol,负责呈现用户的创建和更改。 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 个答案:

答案 0 :(得分:1)

您似乎正在将当前密码传递回GUI。没有必要这样做。这会造成潜在的安全漏洞

建议您将密码更改视为单独的服务调用,而不仅仅是简单的记录编辑练习。 RIA服务支持 Invoke Operations ,它们基​​本上是对RIA服务的任意直接调用。对Invoke操作的唯一限制是它们不能返回复杂类型(这个例子不是问题)。

传递当前登录用户标识当前密码(已编码)和新密码(已编码),然后执行所有工作服务器端。返回一个简单的成功布尔值。

只是一些建议,我很高兴看到其他人的想法:)