Как расширить функциональность входа в Turbogears 2.1 - PullRequest
4 голосов
/ 25 декабря 2009

Я использую Turbogears 2.1 и repoze.who / what и не могу понять, как расширить основные функции аутентификации. По сути, я пытаюсь потребовать, чтобы пользователи активировали свою учетную запись по электронной почте, прежде чем они смогут войти в систему. Если они пытаются войти без активации своей учетной записи, я хочу отобразить соответствующее сообщение об ошибке. По умолчанию функциональность Turbogears просто отображает одно сообщение для всех ошибок.

Я создал свой собственный плагин аутентификации, который отлично работает. Пользователи не смогут войти, если они не активировали свою учетную запись. Однако проблема возникает, когда я пытаюсь создать форму и отображать пользовательские сообщения об ошибках. Как я могу сделать это?

Спасибо

1 Ответ

4 голосов
/ 29 января 2010

Невозможно дать действительно хороший ответ, не увидев ваш реальный код, но вот одна идея:

  1. Создайте плагин поставщика метаданных repoze.who, который «пишет» что-то, указывающее, активировал ли пользователь свою учетную запись.
  2. Создайте плагин «решающий претендент», который проверяет, прошел ли пользователь аутентификацию, а также активировали ли они свою учетную запись (проверяя метаданные, которые вы установили с помощью плагина метаданных).
  3. Создайте плагин для претендента, чтобы отправить реальный вызов. Если пользователь не аутентифицирован, отправьте обратно форму / приглашение для входа. Если пользователь прошел проверку подлинности (ваш подключаемый модуль для проверки подлинности прошел успешно), но он не активировал свою учетную запись, отправьте обратно страницу с ошибкой с просьбой активировать свою учетную запись.

В любом случае, внимательно прочитайте эту страницу .

Вы также можете использовать repoze.what с пользовательским предикатом, но вам, вероятно, придется разбрасывать декораторы по всему коду, проверяя, активирована ли их учетная запись на каждом контроллере / методе. Некрасиво.

Надеюсь, это поможет!

...