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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜在线观看免费观看 视频 | 亚洲福利一区 | 美女张开腿黄网站免费精品动漫 | 国产精品久久久久这里只有精品 | 成人小视频在线观看 | 国产精品视频色拍拍 | 国产欧美一区视频在线观看 | 美女张开腿让我了一夜 | 国产精品视频免费观看 | 久久热这里只有 精品 | 国产色在线观看 | 国色天香高清版 | 91久 | 范冰冰性xxxxhd | 疯狂伦交1一6 小说 风间由美在线 | 九九成人免费视频 | 被18号每天强行榨干acg | 国产九九视频在线观看 | 四虎麻豆| 亚洲精品www久久久久久久软件 | 欧美人做人爱a全程免费 | 二区三区不卡不卡视频 | 日本激情网 | 国产精品久久久免费视频 | 韩剧网3600热播剧 | 国产三级自拍 | 性色AV乱码一区二区三区视频 | 久久久黄色片 | 香蕉视频久久 | 亚洲一欧洲中文字幕在线 | aⅴ天堂小视频 | 欧美白人猛性xxxxx69交 | 成人黄页网站 | 亚洲国产成人99精品激情在线 | 我半夜摸妺妺的奶C了她 | chinese男gay| 亚洲欧美色综合图小说 | 亚洲一二三区视频 | 动漫jk美女被爆羞羞漫画 | 男同志与动人物zozotv | 97菊爱网 |