4

非常简单的问题:我的服务中有一个会话对象:

var session = this.GetSession(); //IAuthSession
   if (!session.IsAuthenticated)

我可以根据传递给服务的参数修改会话类中的一些值(例如权限);然后我想拯救他们。如何?

直接的做法是:创建一个 UserAuth 对象,使用 IAuthSession 中的所有字段填充它,获取 IDbConnectionFactory,保存它。

当然有更快更好的方法,但我找不到它!

更一般地说,如何在 IAuthSession 和 UserAuth 之间切换?即,给定一个 IAuthSession 对象,我怎样才能获得一个 UserAuth 对象,修改它,并持久化修改?

我已经阅读了这个关于如何将元数据附加到用户登录信息的问题,但仍然缺少一些东西。

一旦你添加了你需要的东西,你如何保存它?(我怀疑您只是将元数据添加到会话和 UserAuth,然后使用 IDbConnectionFactory 保存后者;必须有更好的方法!)

4

1 回答 1

3

老问题,但值得回答。

正在使用的UserAuthRepository应该具有UpdateUserAuth可以调用以保存UserAuth更改的方法的实现

UpdateUserAuth(UserAuth existingUser, UserAuth newUser, string password)

另一种更简单的方法是调用RegisterServiceusing 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;
}
于 2015-03-30T20:43:32.400 回答