非常简单的问题:我的服务中有一个 session 对象:
var session = this.GetSession(); //IAuthSession
if (!session.IsAuthenticated)
我可以根据传递给服务的参数修改 session 类中的一些值(例如权限);然后我想救他们。
如何?
直接的方法是:创建一个 UserAuth 对象,用来自 IAuthSession 的所有字段填充它,获取 IDbConnectionFactory,保存它。
当然有更快更好的方法,但我找不到它!
更一般地说,我如何在 IAuthSession 和 UserAuth 之间切换?即,给定一个 IAuthSession 对象,如何获取 UserAuth 对象、修改它并保留修改?
我已经在 how to append metadata to a user login info 上阅读了这个问题,但仍然缺少一些东西。
一旦你添加了你需要的东西,你如何保存它? (我怀疑您只是将元数据添加到 session 和 UserAuth,然后您使用 IDbConnectionFactory 保存后者;一定有更好的方法!)
最佳答案
老问题,但值得回答。
正在使用的 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;
}
关于authentication - 如何在 ServiceStack 中更新用户数据表单 session ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17813438/