4

Turbogears 2.1 と repoze.who/what を使用していますが、基本認証機能を拡張する方法がわかりません。私は基本的に、ユーザーがログインする前に、電子メールで送信されたリンクを介してアカウントを有効にすることを要求しようとしています。アカウントをアクティブ化せずにログインしようとした場合、適切なエラー メッセージを表示したいと考えています。デフォルトの Turbogears 機能は、すべてのエラーに対して 1 つのメッセージを表示するだけです。

正常に動作する独自の認証プラグインを作成しました。アカウントをアクティブ化していない場合、ユーザーはログインできません。ただし、フォームを作成してカスタム エラー メッセージを表示しようとすると、問題が発生します。どうすればこれを行うことができますか?

ありがとう

4

1 に答える 1

4

実際のコードを見ずに本当に良い答えを出すことは不可能ですが、ここに 1 つのアイデアがあります。

  1. ユーザーがアカウントをアクティブ化したかどうかを示す何かを「走り書き」する repoze.who メタデータ プロバイダー プラグインを作成します。
  2. ユーザーが認証されているかどうか、およびユーザーがアカウントをアクティブ化したかどうか (メタデータ プラグインで設定したメタデータをチェックすることにより) の両方を調べる「チャレンジャー決定者」プラグインを作成します。
  3. チャレンジャー プラグインを作成して、実際のチャレンジを送り返します。ユーザーが認証されていない場合は、ログイン フォーム/プロンプトを返信します。ユーザーが認証された (オーセンティケーター プラグインが成功した) が、アカウントをアクティブ化していない場合は、ユーザーにアカウントをアクティブ化するよう求めるカスタム エラー ページを返します。

いずれにせよ、このページを注意深く読んでください。

カスタム述語で repoze.what を使用することもできますが、すべてのコントローラー/メソッドでアカウントがアクティブ化されているかどうかを確認して、コード全体にデコレーターを振りかける必要があるでしょう。醜い。

お役に立てれば!

于 2010-01-29T00:16:54.280 に答える