SpringMVCはここに統合しませんが、INI構成ファイルを直接使用します。
shiro.ini
[Main]#オブジェクトとそのプロパティは、SecurityManager、Realmsなどのあらゆるものなど、ここで定義されています。 org.apache.shiro.cache.memoryconstrainedcachemanagerecuritymanager = org.apache.shiro.web.mgt.defaultwebsecuritymanagercuritymanager.cachemanager = $ bulistincachemanagersecuritymanager.sessionmanager = $ session manager#session exitを強制すると、sessionmanager = org.apache.shiro.web.session.mgt.defaultwebsessionmanager.sessiondao = $ sessiondaossessiondao = org.apache.shiro.session.mgt.eis.memorysessiondao org.apache.shiro.realm.ldap.jndildaprealm#...........##configure jdbc realm datasourcedatasource = org.postgresql.ds.poolingdatasource#....... org.apache.shiro.realm.jdbc.jdbcrealmjdbcrealm.userrolesquery = ...... jdbcrealm.permissionsquery = ...... jdbcrealm.datasource = $ datasource $ ldaprealm、$ localauthorizingRealm
LocalAuthorizingRealmでは、認証のためにログインする前にユーザーの他のセッションを削除します。
@OverRideProtected AuthenticationInfo dogetAuthenticationInfo(AuthenticationToken AuthenticationToken)Sthrows AuthenticationException {String Username =(String)AuthenticationToken.getPrincipal(); (defaultwebsessionmanager)securitymanager.getsessionmanager(); collection <session> sessions = sessionmanager.getsessiondao()。getactivesessions(); //(セッションセッション:sessions:sessions){//ユーザーが保存したときに保存されているときに保存されたユーザーが保存したクリアセッションの現在のユーザーセッションリストを取得します前(username.equals(string.valueof(session.getAttribute))))))))))))))))))))セッションが削除された後、Shiroが認証判断を下す前に、クライアントとサーバーの間に相互作用が必要です。サーバーと対話する場合、サブジェクト情報スクリーンショットは次のとおりです。
現時点では、ログインしたユーザー認証の有効期限が切れ、クライアントに応答できます。
上記は、編集者がシングルサインインを実現するために紹介するものです(1人のユーザーが同時に1つの場所でのみログインできます)。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!