亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache shiro如何單點登錄

發布時間:2021-08-21 11:36:16 來源:億速云 閱讀:125 作者:小新 欄目:服務器

小編給大家分享一下Apache shiro如何單點登錄,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.假設你使用了Apache shrio ,項目要求一個賬戶同一時刻只能有一個用戶存在,那么你就應該在你的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>

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

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

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

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

2.SessionManager

這里有個可能出現bug的地方,可以通過配置sessionIdCookie屬性,解決被服務器重寫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>

以上是“Apache shiro如何單點登錄”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉安市| 巴马| 富民县| 三门峡市| 巫溪县| 花莲市| 新和县| 阜新| 文山县| 湖北省| 彩票| 合山市| 五家渠市| 永嘉县| 高州市| 卢龙县| 商水县| 鲁甸县| 佛学| 兴安盟| 大丰市| 长葛市| 浦县| 雷波县| 惠来县| 昂仁县| 小金县| 湟中县| 资阳市| 雅江县| 长宁县| 博爱县| 镶黄旗| 香格里拉县| 韶关市| 崇仁县| 兰坪| 平果县| 伽师县| 永顺县| 固阳县|