Je n'intégre pas SpringMVC ici, mais j'utilise directement le fichier de configuration INI.
shiro.ini
[Main] # Les objets et leurs propriétés sont définis ici, # tels que le SecurityManager, les Realms et tout ce qui a besoin pour construire le SecurityManageRauthc.Loginurl = /login.jspauthc.SucCessurl = /web/index.jsp#cache ManagerbuilLinCacheManager = org.apache.shiro.cache.memoryContrassedCacheManagersEcurityManager = org.apache.shiro.web.mgt.defaultwebsecurecurityManagersEcurityManager.CacheManager = $ BuilgacheManagersecurityManager.SessionManager = $ session # session vous devez configurer session. Lorsque vous forcez la sortie, sessionManager = org.apache.shiro.web.session.mgt.defaultwebSessionManager.SessionDao = $ SessionDaosSessionDao = org.apache.shiro.Session.mgt.eis.memorySessionDao # Create Ldap RealMldaprealm = org.apache.shiro.realm.ldap.jndildaprealm # ......... # Configurer JDBC Realm DataSourceDataSource = org.postgresql.ds.pgpoolingDataSource # ....... # # Create Jdbc realm.jdbcrealm.perMissionsPlayPened = truejdbcrealm = org.apache.shiro.realm.jdbc.jdbcrealmjdbcrealm.UserrolesQuery = ...... jdbcrealm.perMissionsQuery = ...... jdbcrealm.datasource = $ datasource # self immlocalAuthorizingRizingRizingRealm = com.redbudek.shiro.LocalaAutrizingRizingRealReal $ ldaprealm, $ localAuthorizingRealm
Dans localAuthorizingRealm, supprimez les autres sessions de l'utilisateur avant de vous connecter pour l'authentification:
@OverRideProtected AuthenticationInfo doGetAuthenticationInfo (authenticationToken AuthenticationToken) lève AuthenticationException {String username = (String) AuthenticationToken.GetPrincipal (); // Gire sessionDefaultWebSecurityManager SecurityManager ();); sessionManager = (DefaultWebSessionManager)securityManager.getSessionManager();Collection<Session> sessions = sessionManager.getSessionDAO().getActiveSessions();//Get the currently logged in user session list for(Session session:sessions){//Clear sessionif saved by the user when he logged in avant (username.equals (string.valueof (session.getAttribute (defaultSubjectContext.Principals_session_key)))))))))) {SessionManager.getSessionDao (). Delete (session);}} String pwd = null; return;} Une fois la session supprimée, il doit y avoir une interaction entre le client et le serveur avant que Shiro puisse porter des jugements d'authentification. Lors de l'interaction avec le serveur, la capture d'écran des informations du sujet est la suivante:
À l'heure actuelle, l'authentification utilisateur connectée a expiré et peut répondre au client.
Ce qui précède est ce que l'éditeur vous présente pour réaliser une connexion unique (un utilisateur ne peut se connecter qu'à un seul endroit en même temps). J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!