Я не интегрирую SpringMVC здесь, но я использую файл конфигурации INI напрямую.
Shiro.ini
[MAIN]# Объекты и их свойства определены здесь,# такие, как SecurityManager, Realms и все, что нужно# иначе, необходимо для создания SecurityManagerauthc.loginurl = /login.jspauthc.successurl = /web/index.jsp#cache Managerbuiltincachemanager = org.apache.shiro.cache.memoryConstrainsedCachEmanagerSecurityManager = org.Apache.shiro.web.mgt.defaultwebsecurityManagerSecurityManager.Cachemanager = $ buildincachEmanagerSecuritymanager.sessionManager = $ sessionMager#Session Вы должны настраивать сессию. Когда вы принуждаете выходить, sessionManager = org.apache.shiro.web.session.mgt.defaultwebsessionManager.sessionDao = $ sessionDaossessionDao = org.apache.shiro.session.mgt.eis.memorysessionDao# Создание LDAP RealMldapRealm = org.apache.shiro.realm.ldap.jndildapRealm# .........# configure jdbc realm dataSourceDataSource = org.postgresql.ds.pgpoolingdatasource# .......# create jdbc realm.jdbrealm. org.apache.shiro.realm.jdbc.jdbrealmjdbrealm.userrolesquery = ...... jdbcrealm.permissionquery = ...... jdbcrealm.datasource = $ dataSource#self -realmlocalauthorizingRealm = com.redbudtek.shiro.localauthorizingRealmAralizingRealM = com.redbudtek.shiro.localauthorizingRealmAralmAralizingRealM = Com.RedBudte $ LDAPREALM, $ LocalAuthorizingRealm
В LocalAuthorizingRealm удалите другие сеансы пользователя перед входом в систему для аутентификации:
@OverrideProtected AuthenticationInfo DogetauthenticationInfo (аутентификация AuthenticationToken) Throws AuthenticationException {String userName = (String) AuthenticationToken.getPrincipal (); // Обработка SessionDefaultWebsecurityManager ManageMager = (DefaultWebsecurityManager) SevierwSecurityManagermanager managemanager managemanager managemanager managemanager managemanager. (DefaultWebsessionManager) SecurityManager.getSessionManager (); Collection <session> sessions = sessionManager.getSessionDao (). GetActivessessions (); // Получить в настоящее время в списке сеансов пользователя (Sessions Sessions) {// Clear SessionIf пользователь. До (username.equals (string.valueof (session.getAttribute (defaultubjectcontext.principals_session_key)))))))) {sessionManager.getSessionDao (). Delete (session);}} string pwd = null; return new SimpleAuthitcyInfo (username, pwd, getName); После удаления сеанса должно быть взаимодействие между клиентом и сервером, прежде чем Широ сможет вынести суждения об аутентификации. При взаимодействии с сервером, экранина информационного экрана в отношении предмета выглядит следующим образом:
В настоящее время истек срок службы аутентификации пользователей и может ответить на клиента.
Выше приведено то, что редактор представляет вам, чтобы реализовать отдельную регистрацию (один пользователь может войти только в одном месте одновременно). Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!