一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - shiro實現單點登錄(一個用戶同一時刻只能在一個地方登錄)

shiro實現單點登錄(一個用戶同一時刻只能在一個地方登錄)

2020-06-08 11:46mrr JAVA教程

這篇文章主要介紹了shiro實現單點登錄(一個用戶同一時刻只能在一個地方登錄)的相關資料,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧

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

shiro.ini

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[main]
# Objects and their properties are defined here,
# Such as the securityManager, Realms and anything
# else needed to build the SecurityManager
authc.loginUrl = /login.jsp
authc.successUrl = /web/index.jsp
#cache manager
builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager=org.apache.shiro.web.mgt.DefaultWebSecurityManager
securityManager.cacheManager = $builtInCacheManager
securityManager.sessionManager=$sessionManager
#session 必須配置session,強制退出時,通過將session移除實現
sessionManager=org.apache.shiro.web.session.mgt.DefaultWebSessionManager
sessionManager.sessionDAO=$sessionDAO
sessionDAO=org.apache.shiro.session.mgt.eis.MemorySessionDAO
# Create ldap realm
ldapRealm = org.apache.shiro.realm.ldap.JndiLdapRealm
#......
# Configure JDBC realm datasource
dataSource = org.postgresql.ds.PGPoolingDataSource
#.......
# Create JDBC realm.
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.userRolesQuery = ......
jdbcRealm.permissionsQuery = ......
jdbcRealm.dataSource = $dataSource
#self realm
localAuthorizingRealm = com.redbudtek.shiro.LocalAuthorizingRealm
securityManager.realms = $ldapRealm, $localAuthorizingRealm

在 LocalAuthorizingRealm 中,用戶登錄進行認證之前,先將該用戶的其他session移除:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
String userName = (String)authenticationToken.getPrincipal();
//處理session
DefaultWebSecurityManager securityManager = (DefaultWebSecurityManager) SecurityUtils.getSecurityManager();
DefaultWebSessionManager sessionManager = (DefaultWebSessionManager)securityManager.getSessionManager();
Collection<Session> sessions = sessionManager.getSessionDAO().getActiveSessions();//獲取當前已登錄的用戶session列表
for(Session session:sessions){
//清除該用戶以前登錄時保存的session
if(userName.equals(String.valueOf(session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY)))) {
sessionManager.getSessionDAO().delete(session);
}
}
String pwd = null;
return new SimpleAuthenticationInfo(userName,pwd,getName());
}

shiro實現單點登錄(一個用戶同一時刻只能在一個地方登錄)

當session刪除之后,必須有客戶端與服務器端的交互,shiro才能進行認證判斷。在與服務器交互時,subject信息截圖如下:

shiro實現單點登錄(一個用戶同一時刻只能在一個地方登錄)

此時的登錄的用戶認證已經失效,可以對客戶端做出響應。

以上所述是小編給大家介紹的shiro實現單點登錄(一個用戶同一時刻只能在一個地方登錄),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九99香蕉在线视频美国毛片 | 美女被躁了在线观看视频 | 免费国产好深啊好涨好硬视频 | 久久国产乱子伦免费精品 | 91爱啪| 日韩国产欧美精品综合二区 | 波多野结衣作品在线观看 | 人禽l交视频在线播放 视频 | 男人午夜免费视频 | 久久er国产精品免费观看2 | 亚洲黄色网页 | 国产人人艹 | 色无月| 美女全身无遮挡 | 色播导航 | 欧美日韩国产在线人成dvd | 日本视频观看 | 电车痴汉中文字幕 | 四虎永久免费地址在线网站 | porono日本动漫 | 国产精品亚洲精品日韩已方 | 911福利视频 | 女人和拘做受全过程免费 | 亚洲乱亚洲乱妇41p国产成人 | 亚欧有色在线观看免费版高清 | 别停好爽好深好大好舒服视频 | 日韩天堂视频 | 天堂a视频 | 超级乱淫伦短篇小说做车 | 亚洲国产成人精品 | 青青青视频免费观看 | 国产女主播在线播放一区二区 | 清纯唯美 亚洲 | 男人的天堂久久爱 | 国产日产欧产精品精品软件 | 免费av在线视频 | 91制片厂制作果冻传媒破解 | 男人操女人免费视频 | 欧美高清在线精品一区二区不卡 | 欧美亚洲欧美 | 娇妻与公陈峰姚瑶小说在线阅读 |