Não integro Springmvc aqui, mas uso o arquivo de configuração INI diretamente.
shiro.ini
[Main]# Objetos e suas propriedades são definidos aqui,# como o SecurityManager, os Realms e qualquer coisa# mais necessária para construir o SecurityManageRauthc.loginurl = /Login.jspauthc.successurl = /web/index.jsp#cache gerentebuiltinchaManager = org.apache.shiro.cache.memoryConstroudCachemanagerSecurityManager = org.apache.shiro.web.mgt.defaultweburSecurityManagerSecurityManager.Cachemanager = $ BREFFINCACHEMANAGERSCURSOMANAGER.SENSIZANGER = $ session#Você deve confiar. Quando você forçar a saída, sessionManager = org.apache.shiro.web.session.mgt.defaultwebesessionmanager.sessionDao = $ sessionDaossessionDao = org.apache.shiro.session.mgt.eis.memorySessionDao# Crie ldap realMldArmed org.apache.shiro.realm.ldap.jndildapRealm# .........# Configure jdbc realM datasOrceDatasource = org.postgresql.ds.pgpoolingDataSource# .......# CREATE org.apache.shiro.realm.jdbc.jdbcrealmjdbcrealM.UserRolesquery = ...... jdbcrealm.permissionsQuery = ...... jdbCrealM.DataSource = $ DATASOURCE#realmlocalAtorizingRealm = com.RedBudtek.ShiroMoLAlocAlocalAlorizingRealm = com.RedBudtek.ShiroMoLeLocalAlocalAringRealm = COM.RedBudtektek.ShiroMOlocalocalAlAringRealm = COM.RedBudTek.ShiroMoLAlocAlocalAloringRealm = COM.RedBudtektek.shiro $ ldaprealm, $ localAuthorizingRealm
No LocalAuthorizingRealm, remova as outras sessões do usuário antes de fazer login para autenticação:
@OverRideProtected AuthenticationInfo DogEtaThenticationInfo (autenticação AuthenticationToken) lança AuthenticationException {String UserName = (String) AuthenticationToken.getPrincipal (); // manipulam sessionDefaultWebEsCegurComManager = (DefulweBs); = (DefaultWebSessionManager) Segurança antes (nome de usuário.equals (string.valueof (session.getAttribute (defaultsubjectContext.principals_session_key)))))))))) {sessionManager.getSessionDao (). DeLete (sessão);}} string = null retorn; Após a exclusão da sessão, deve haver interação entre o cliente e o servidor antes que Shiro possa fazer julgamentos de autenticação. Ao interagir com o servidor, a captura de tela de informações do assunto é a seguinte:
No momento, a autenticação do usuário logada expirou e pode responder ao cliente.
O exposto acima é o que o editor apresenta a você para realizar um único login (um usuário pode fazer login apenas em um local ao mesmo tempo). Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!