国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

shiro實(shí)現(xiàn)單點(diǎn)登錄(一個(gè)用戶(hù)同一時(shí)刻只能在一個(gè)地方登錄)

2019-11-26 13:55:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

我這里 shiro 并沒(méi)有集成 springMVC,直接使用 ini 配置文件。

shiro.ini

[main]# Objects and their properties are defined here,# Such as the securityManager, Realms and anything# else needed to build the SecurityManagerauthc.loginUrl = /login.jspauthc.successUrl = /web/index.jsp#cache managerbuiltInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManagersecurityManager=org.apache.shiro.web.mgt.DefaultWebSecurityManagersecurityManager.cacheManager = $builtInCacheManagersecurityManager.sessionManager=$sessionManager#session 必須配置session,強(qiáng)制退出時(shí),通過(guò)將session移除實(shí)現(xiàn)sessionManager=org.apache.shiro.web.session.mgt.DefaultWebSessionManagersessionManager.sessionDAO=$sessionDAOsessionDAO=org.apache.shiro.session.mgt.eis.MemorySessionDAO# Create ldap realmldapRealm = org.apache.shiro.realm.ldap.JndiLdapRealm#......# Configure JDBC realm datasourcedataSource = org.postgresql.ds.PGPoolingDataSource#.......# Create JDBC realm.jdbcRealm.permissionsLookupEnabled = truejdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealmjdbcRealm.userRolesQuery = ......jdbcRealm.permissionsQuery = ......jdbcRealm.dataSource = $dataSource#self realmlocalAuthorizingRealm = com.redbudtek.shiro.LocalAuthorizingRealmsecurityManager.realms = $ldapRealm, $localAuthorizingRealm

在 LocalAuthorizingRealm 中,用戶(hù)登錄進(jìn)行認(rèn)證之前,先將該用戶(hù)的其他session移除:

@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {String userName = (String)authenticationToken.getPrincipal();//處理sessionDefaultWebSecurityManager securityManager = (DefaultWebSecurityManager) SecurityUtils.getSecurityManager();DefaultWebSessionManager sessionManager = (DefaultWebSessionManager)securityManager.getSessionManager();Collection<Session> sessions = sessionManager.getSessionDAO().getActiveSessions();//獲取當(dāng)前已登錄的用戶(hù)session列表for(Session session:sessions){//清除該用戶(hù)以前登錄時(shí)保存的sessionif(userName.equals(String.valueOf(session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY)))) {sessionManager.getSessionDAO().delete(session);}}String pwd = null;return new SimpleAuthenticationInfo(userName,pwd,getName());}

當(dāng)session刪除之后,必須有客戶(hù)端與服務(wù)器端的交互,shiro才能進(jìn)行認(rèn)證判斷。在與服務(wù)器交互時(shí),subject信息截圖如下:

此時(shí)的登錄的用戶(hù)認(rèn)證已經(jīng)失效,可以對(duì)客戶(hù)端做出響應(yīng)。

以上所述是小編給大家介紹的shiro實(shí)現(xiàn)單點(diǎn)登錄(一個(gè)用戶(hù)同一時(shí)刻只能在一個(gè)地方登錄),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 得荣县| 栖霞市| 北宁市| 清新县| 石屏县| 枣庄市| 扬中市| 兴海县| 彭泽县| 西盟| 廊坊市| 连州市| 海阳市| 辽阳县| 姜堰市| 洛扎县| 昭通市| 衡南县| 榆中县| 远安县| 家居| 宜宾县| 常山县| 佛学| 青岛市| 红桥区| 巴东县| 山丹县| 泊头市| 茌平县| 兴山县| 周宁县| 泰和县| 上思县| 百色市| 金山区| 思南县| 集贤县| 古蔺县| 和龙市| 平昌县|