在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);
...
}
答案 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
获得了什么,因为南希没有注册。