servicestack,Authentication,servicestack" /> servicestack,Authentication,servicestack" />

Authentication 如何在ServiceStack中更新用户数据表单会话?

Authentication 如何在ServiceStack中更新用户数据表单会话?,authentication,servicestack,Authentication,servicestack,非常简单的问题:我的服务中有一个会话对象: var session = this.GetSession(); //IAuthSession if (!session.IsAuthenticated) 我可以根据传递给服务的参数修改会话类中的一些值(例如权限);那我想救他们。 怎么做 直接的方法是:创建一个UserAuth对象,使用IAuthSession中的所有字段对其进行popole,获取IDbConnectionFactory,然后保存它 当然有一种更快更好的方法,但我没能找到 一般

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

var session = this.GetSession(); //IAuthSession
   if (!session.IsAuthenticated)
我可以根据传递给服务的参数修改会话类中的一些值(例如权限);那我想救他们。 怎么做

直接的方法是:创建一个UserAuth对象,使用IAuthSession中的所有字段对其进行popole,获取IDbConnectionFactory,然后保存它

当然有一种更快更好的方法,但我没能找到

一般来说,如何在IAuthSession和UserAuth之间切换?也就是说,给定一个IAuthSession对象,我如何获得一个UserAuth对象,修改它,并保存修改

我已经读了这个问题,但仍然缺少一些东西


一旦您添加了所需内容,如何保存?(我怀疑您是否只是将元数据添加到session和UserAuth中,然后使用IDbConnectionFactory保存后者;肯定有更好的方法!)

这个老问题值得回答

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

UpdateUserAuth(UserAuth existingUser, UserAuth newUser, string password)
另一个更简单的方法是使用
PUT
调用
RegisterService
,它将为您更新现有的注册用户

/// <summary>
/// Update an existing registraiton
/// </summary>
public object Put(Register request)
{
   return Post(request);
}
//
///更新现有的注册
/// 
公共对象Put(注册请求)
{
返回岗位(请求);
}
服务调用类似于以下内容:

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;
}
使用(var authService=base.ResolveService())
{
var authResponse=authService.Put(
新登记册{
用户名=session.UserName??session.Email,
Email=session.Email,
等
});
if(authResponse为IHTTPeror)
抛出(异常)authResponse;
}