1

Shiro でユーザーを認証するには、次の要件があります。

  1. ユーザー名とパスワードは、データベースに保存されているものと一致する必要があります。ユーザー名とパスワードが一致しない場合は、認証の失敗を示すエラー メッセージが表示されます。
  2. アカウントがアクティブである必要があります - ユーザーは、アクティベーション メールを介してアカウントをアクティベートします。ユーザーのアカウントがアクティブでない場合は、アクティブ化電子メールをクリックしていないことを示すエラー メッセージが表示されます。
  3. アカウントの有効期限が切れていてはなりません。ユーザー アカウントには有効期限があります。ユーザーのアカウントの有効期限が切れている場合は、アカウントの有効期限が切れていることを示すエラー メッセージが表示されます。

注: ユーザー情報を保存するためのデータベースが 2 つあります。1 つは認証情報 (ユーザー名とパスワード) を格納し、もう 1 つのデータベースはアカウントの有効期限などの情報を格納します。

最初の要件は、shiro.ini で JDBC レルムを構成するだけで簡単に達成できます。

要件 2 と 3 を達成するには、いくつかのカスタム Java ロジックを実装する必要があると思います。上記の実装方法に関するヒントはありますか? カスタム領域を実装する必要がありますか?

4

1 に答える 1

2

これを行う 1 つの方法は、実際にカスタム レルムを作成することです。

認証に関しても、いくつかのカスタム要求がありました。これは、独自のカスタム レルム実装を作成することで実装しました。AuthorizingRealm を拡張し、doGetAuthenticationInfo メソッドをオーバーライドして、ユーザーのログインを確認できるかどうかを確認しました。ケース 2 と 3 をそこに配置できます。

Web 環境でのみ shiro を使用する場合は、standation authc フィルターをオーバーライドし、isAccessAllowed メソッドをオーバーライドすることを検討してください。ユーザーがまだアクティブ化されていないか、有効期限が切れていない場合は、カスタム リダイレクトを実装できます。

于 2013-10-26T12:25:14.003 に答える