麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > Apache > 正文

關(guān)于Apache shiro實現(xiàn)一個賬戶同一時刻只有一個人登錄(shiro 單點登錄)

2024-08-27 18:30:48
字體:
供稿:網(wǎng)友

今天遇到一個項目問題,shiro如何實現(xiàn)一個賬戶同一時刻只有一session存在的問題,找了幾篇文章,在這里就把核心的代碼理了理,具體情況如下。

1.假設(shè)你使用了Apache shrio ,項目要求一個賬戶同一時刻只能有一個用戶存在,那么你就應(yīng)該在你的shiro配置文件中添加以下代碼:

<bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.MemorySessionDAO"></bean>   <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">      <constructor-arg name="name" value="SHRIOSESSIONID"/>    </bean>    <!-- 配置shiro session 的一個管理器 -->   <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">     <property name="sessionDAO" ref="sessionDAO"></property>   </bean>   <!-- 配置shiro 緩存的一個管理器 -->   <bean id="shiroCacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager"></bean>   <!-- 配置 Shiro 的 SecurityManager Bean. -->   <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">     <!-- <property name="cacheManager" ref="cacheManager"/>-->     <property name="realm" ref="myRealm"/>     <!-- shiro緩存管理器 -->     <property name="cacheManager" ref="shiroCacheManager"></property>     <!-- shiro session管理器 -->     <property name="sessionManager" ref="sessionManager"></property>   </bean> 

接下來你就應(yīng)該在你的realm中添加下面的代碼,這里主要是為了判斷用戶登錄的賬戶是否已經(jīng)登錄過了。

@Autowired private SessionDAO sessionDAO; ............... 

接下來你就應(yīng)該在realm中得到shiro 的緩存中得到所有的已經(jīng)登錄的賬戶,進行判斷當前用戶是否已經(jīng)登錄

//apache shiro獲取所有在線用戶     Collection<Session> sessions = sessionDAO.getActiveSessions();     for(Session session:sessions){       String loginUsername = String.valueOf(session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY));//獲得session中已經(jīng)登錄用戶的名字              if(username.equals(loginUsername)){ //這里的username也就是當前登錄的username         session.setTimeout(0); //這里就把session清除,                }     } 

2.SessionManager

這里有個可能出現(xiàn)bug的地方,可以通過配置sessionIdCookie屬性,解決被服務(wù)器重寫cookie中會話ID

<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">    <property name="globalSessionTimeout" value="1800000"/>    <property name="deleteInvalidSessions" value="true"/>    <property name="sessionValidationSchedulerEnabled" value="true"/>    <property name="sessionValidationInterval" value="1800000"/>    <property name="sessionIdCookie" ref="sessionIdCookie"/>  </bean>  <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">    <constructor-arg name="name" value="SHRIOSESSIONID"/>  </bean>  

完成這一切之后,本地單一用戶登錄就差不多完成了,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蜜桃传媒视频麻豆第一区免费观看 | 中国女人内谢69xxxx天美 | 日本免费中文字幕 | hd极品free性xxx护士人 | 国产午夜电影 | 亚洲精品 欧美 | 黄色美女网站免费看 | 日本免费不卡一区二区 | 亚洲成人国产综合 | 国产一国产一级毛片视频 | 9999久久久久久 | 斗罗破苍穹在线观看免费完整观看 | 55夜色66夜色国产精品视频 | 日韩视频一区二区三区四区 | 成人午夜免费看 | 久久精品中文字幕一区二区 | 手机免费看一级片 | 九九热精 | 护士xxxx | 国产精品久久久久久婷婷天堂 | 国产一区二区在线免费播放 | 国产精品久久久久久久久久三级 | 色综合网在线观看 | a级高清免费毛片av在线 | 久久av免费 | 欧美成人性生活片 | 在线播放免费人成毛片乱码 | 久久久www成人免费精品 | 成年人国产视频 | 九九福利视频 | 国产一区在线免费 | 日韩毛片网| 国产精品一区二区免费在线观看 | 精品一区二区三区免费看 | 99riav国产在线观看 | 日本高清在线播放 | 国产色片在线观看 | 狠狠干天天 | 国产日韩久久久久69影院 | 精品久久久久久久久久久αⅴ | 全黄裸片武则天艳史 |