IUserMapper 可以用于更改用户详细信息吗

Can IUserMapper be used to Change User Details

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);
    ...
}

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

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

即:

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是从哪里得到的,因为在南希没有注册。