欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年09月20日 10:50:56   作者:ChaplinJ  
今天和同事在一起探討shiro如何實現(xiàn)一個賬戶同一時刻只有一session存在的問題,下面小編把核心代碼分享到腳本之家平臺,需要的朋友參考下

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

1.假設(shè)你使用了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中添加下面的代碼,這里主要是為了判斷用戶登錄的賬戶是否已經(jīng)登錄過了。

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

接下來你就應該在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屬性,解決被服務器重寫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>  

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

相關(guān)文章

  • 關(guān)于Linux vi命令使用詳解(vim編輯器)

    關(guān)于Linux vi命令使用詳解(vim編輯器)

    這篇文章主要介紹了關(guān)于Linux vi命令使用詳解(vim編輯器),文中詳細列舉了vi命令的用法,還不熟悉的朋友可以多看一下
    2023-03-03
  • Centos7安裝完后無法聯(lián)網(wǎng)的解決方法

    Centos7安裝完后無法聯(lián)網(wǎng)的解決方法

    這篇文章主要為大家詳細介紹了Centos7安裝完后無法聯(lián)網(wǎng)的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Linux下非交互式提權(quán)詳解

    Linux下非交互式提權(quán)詳解

    這篇文章主要介紹了Linux下非交互式提權(quán)的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • CentOS平臺快速搭建LAMP環(huán)境的方法

    CentOS平臺快速搭建LAMP環(huán)境的方法

    這篇文章主要介紹了CentOS平臺快速搭建LAMP環(huán)境的方法,結(jié)合實例形式分析了CentOS服務器上搭建LAMP環(huán)境的步驟、相關(guān)命令與操作注意事項,需要的朋友可以參考下
    2019-05-05
  • 在Linux環(huán)境如何將python腳本打deb包

    在Linux環(huán)境如何將python腳本打deb包

    為方便傳輸和使用Python腳本,可以將其制作成deb包。本文詳細介紹了在uos系統(tǒng)下使用debian目錄和相關(guān)文件來定制和構(gòu)建deb包,涵蓋創(chuàng)建配置文件、修改文件、設(shè)置安裝和鏈接規(guī)則等步驟,并提供了打包命令。這樣可以簡化腳本的分發(fā)和安裝過程,使其更加便捷
    2024-09-09
  • linux下php安裝xml擴展的詳細步驟

    linux下php安裝xml擴展的詳細步驟

    在本篇文章里小編給大家整理了關(guān)于linux下php安裝xml擴展的詳細步驟,有需要的朋友們可以學習參考下。
    2020-02-02
  • 初窺Linux 之我最常用的20條命令總結(jié)

    初窺Linux 之我最常用的20條命令總結(jié)

    Linux中的命令的確是非常多,我們只需要了解常用的命令就可以了,本篇文章介紹了Linux 之我最常用的20條命令總結(jié),有興趣的可以了解一下。
    2016-12-12
  • 詳解Linux 查看服務器開放的端口號

    詳解Linux 查看服務器開放的端口號

    本篇文章主要介紹詳解Linux 查看服務器開放的端口號,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Linux如何實現(xiàn)斷點續(xù)傳文件功能

    Linux如何實現(xiàn)斷點續(xù)傳文件功能

    最近在工作中遇到一個需求,要實現(xiàn)Linux下的文件傳輸,支持斷點續(xù)傳,所以這篇文章主要給大家介紹了關(guān)于Linux如何實現(xiàn)斷點續(xù)傳文件功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • Linux如何創(chuàng)建用戶組和用戶

    Linux如何創(chuàng)建用戶組和用戶

    這篇文章主要介紹了Linux如何創(chuàng)建用戶組和用戶問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論