2013-07-23 27 views
4

很簡單的問題:我有一個會話對象在我的服務:如何更新ServiceStack中的用戶數據表單會話?

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

我可以修改會話類基於傳遞給服務的參數的一些值(例如權限);那麼我想保存它們。 如何?

這樣做的直接方式是:創建一個UserAuth對象,將其與IAuthSession中的所有字段放在一起,獲取IDbConnectionFactory,將其保存。

當然有更快更好的方法,但我無法找到它!

更一般地說,如何在IAuthSession和UserAuth之間切換?也就是說,給定一個IAuthSession對象,我如何獲得一個UserAuth對象,修改它,並堅持修改?

我已閱讀how to append metadata to a user login info上的這個問題,但仍有些東西遺漏。

一旦你添加了你所需要的,你怎麼保存它? (我懷疑你只是將元數據添加到會話和UserAuth中,然後使用IDbConnectionFactory來保存後者;必須有更好的方法!)

回答

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; 
} 
相關問題