可以使用IUserMapper来更改用户详细信息

时间:2015-07-15 06:25:27

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

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

1 个答案:

答案 0 :(得分:0)

您根本不会使用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获得了什么,因为南希没有注册。