非常简单的问题:我的服务中有一个会话对象:
var session = this.GetSession(); //IAuthSession
if (!session.IsAuthenticated)
我可以根据传递给服务的参数修改会话类中的一些值(例如Permissions);然后我想保存它们。 怎么样?
执行此操作的直接方法:创建一个UserAuth对象,使用IAuthSession中的所有字段对其进行弹性处理,获取IDbConnectionFactory,然后保存它。
当然有更快更好的方法,但我无法找到它!
更一般地说,如何在IAuthSession和UserAuth之间切换?即,给定一个IAuthSession对象,我如何获取UserAuth对象,修改它并保留修改?
我已经在how to append metadata to a user login info上阅读了这个问题,但仍然缺少某些内容。
添加完所需内容后,如何保存? (我怀疑你只是将元数据添加到session和UserAuth,然后使用IDbConnectionFactory来保存后者;必须有更好的方法!)
答案 0 :(得分:3)
老问题但值得回答。
正在使用的UserAuthRepository
应该有UpdateUserAuth
方法的实现,可以调用该方法来保存UserAuth
更改
UpdateUserAuth(UserAuth existingUser, UserAuth newUser, string password)
另一种更简单的方法是使用RegisterService
调用PUT
,这将为您更新现有的注册用户。
/// <summary>
/// Update an existing registraiton
/// </summary>
public object Put(Register request)
{
return Post(request);
}
服务电话会与此类似:
using (var authService = base.ResolveService<RegisterService>())
{
var authResponse = authService.Put(
new Register {
UserName = session.UserName ?? session.Email,
Email = session.Email,
etc...
});
if (authResponse is IHttpError)
throw (Exception)authResponse;
}