Турбогенераторы меняют пользователя с помощью вызовов функций - PullRequest
3 голосов
/ 02 января 2011

В TG1 вы можете изменить зарегистрированного пользователя, выполнив что-то вроде:

identity.set_current_identity(identity)

Возможно ли сделать что-то подобное в TG2?Кажется, что repoze.who должен предоставить что-то похожее, но я не могу найти волшебные слова.

В качестве альтернативы, есть ли у них какая-либо документация о том, как использовать repoze.who любым другим способом, кроме обычногозапросить логин и пароль, а затем отправить эти данные в / login_handler.Где код, который обрабатывает login_handler?

Спасибо!

1 Ответ

3 голосов
/ 09 июля 2011

Вы можете использовать идентификатор, чтобы запомнить нового пользователя. По умолчанию в TurboGears2 пользователи идентифицируются по имени пользователя, поэтому вы можете переключать их, используя имя пользователя.

def force_user(user_name):
    request = tg.request
    response = tg.response

    request.cookies.clear()
    authentication_plugins = request.environ['repoze.who.plugins']
    identifier = authentication_plugins['main_identifier']

    try:
        response.headers = identifier.remember(request.environ, {'repoze.who.userid':user_name})
    except:
        pass
...