【问题标题】:Can IUserMapper be used to Change User DetailsIUserMapper 可以用来更改用户详细信息吗
【发布时间】:2015-10-04 01:15:36
【问题描述】:

Nancy FX 中,我如何使用IUserMapper(如果有的话)更改已登录用户的帐户详细信息(姓名、电子邮件、密码)?

// registering is straight forward
Post["/register", true] = async(parameters, ct) =>
{
    var user = this.BindAndValidate<UserRegistration>();
    var response = await mapper.RegisterUser(user); // user is registered
    ...
}

// but how can I change a registered user's details?
Post["/profile", true] = async(parameters, ct) =>
{
    this.RequiresAuthenticationAndLogOut();
    var user = this.BindAndValidate<UserRegistration>();

    var response = await mapper.?????(user);
    ...
}

【问题讨论】:

    标签: asp.net asp.net-mvc nancy


    【解决方案1】:

    您根本不会使用IUserMapper,这实际上仅用于身份验证目的,仅此而已。

    当用户通过身份验证后,您就可以访问UserName 属性。如果您将映射器设置为将用户的 Id 分配给 UserName,那么您可以加载您的用户、修改和提交。

    即:

    Post["/profile", true] = async(parameters, ct) =>
    {
        this.RequiresAuthenticationAndLogOut();
        var user = this.BindAndValidate<UserRegistration>();
    
        var existingUser = await db.LoadAsync(int.Parse(CurrentUser.UserName));
    
        existingUser.Name = user.Name;
        ...
    
        return ...;
    }
    

    此外,您永远不应该持久化从客户端绑定的对象。用户可能会提交您不希望他们提交的其他信息。

    另外我不知道你从哪里得到你的IUserMapper,因为在南希没有注册。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-17
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      相关资源
      最近更新 更多