2013-07-23 9 views
4

Очень простой вопрос: У меня есть объект сеанса в моей службе:Как обновить сеанс формы данных пользователя в ServiceStack?

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

я могу изменить некоторые значения в классе сессии (например, разрешение) на основе параметров, передаваемых службу; то я хочу их сохранить. Как?

Прямой способ сделать это: создать объект UserAuth, поместить его всеми полями из IAuthSession, получить IDbConnectionFactory, сохранить его.

Несомненно, есть более быстрый и лучший способ, но я не смог его найти!

В общем, как я могу переключаться между IAuthSession и пользователем UserAuth? I.e., учитывая объект 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; 
} 
Смежные вопросы