Турбогенераторы меняют пользователя с помощью вызовов функций
В TG1 вы можете изменить зарегистрированного пользователя, выполнив что-то вроде:
identity.set_current_identity(identity)
Возможно ли сделать что-то подобное в TG2? Кажется, что repoze.who должен предоставить что-то подобное, но я не могу найти волшебные слова.
В качестве альтернативы можно найти любую документацию о том, как использовать repoze.who каким-либо иным способом, кроме обычного подхода - запросить логин и пароль, а затем отправить эти данные в / login_handler. Где код, который обрабатывает login_handler?
Спасибо!
1 ответ
Решение
Вы можете использовать идентификатор, чтобы запомнить нового пользователя. По умолчанию в 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