最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shiro之記住登錄信息

 更新時(shí)間:2017年09月21日 09:46:57   投稿:mrr  
Shiro提供了記住我(RememberMe)的功能,當(dāng)關(guān)閉瀏覽器時(shí)下次再次打開還能記住你的信息,下面小編給大家分享shiro之記住登錄信息的相關(guān)知識(shí),感興趣的朋友一起看看吧

Shiro提供了記住我(RememberMe)的功能,比如訪問(wèn)如淘寶等一些網(wǎng)站時(shí),關(guān)閉了瀏覽器下次再打開時(shí)還是能記住你是誰(shuí),下次訪問(wèn)時(shí)無(wú)需再登錄即可訪問(wèn),基本流程如下:

1、首先在登錄頁(yè)面選中RememberMe然后登錄成功;如果是瀏覽器登錄,一般會(huì)把RememberMe的Cookie寫到客戶端并保存下來(lái);

2、關(guān)閉瀏覽器再重新打開;會(huì)發(fā)現(xiàn)瀏覽器還是記住你的;

3、訪問(wèn)一般的網(wǎng)頁(yè)服務(wù)器端還是知道你是誰(shuí),且能正常訪問(wèn);

4、但是比如我們?cè)L問(wèn)淘寶時(shí),如果要查看我的訂單或進(jìn)行支付時(shí),此時(shí)還是需要再進(jìn)行身份認(rèn)證的,以確保當(dāng)前用戶還是你。

RememberMe配置 

spring-shiro-web.xml配置:

Java代碼  

<!-- 會(huì)話Cookie模板 --> 
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie"> 
  <constructor-arg value="sid"/> 
  <property name="httpOnly" value="true"/> 
  <property name="maxAge" value="-1"/> 
</bean> 
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie"> 
  <constructor-arg value="rememberMe"/> 
  <property name="httpOnly" value="true"/> 
  <property name="maxAge" value="2592000"/><!-- 30天 --> 
</bean>  

sessionIdCookie:maxAge=-1表示瀏覽器關(guān)閉時(shí)失效此Cookie;

rememberMeCookie:即記住我的Cookie,保存時(shí)長(zhǎng)30天;  

Java代碼  

<!-- rememberMe管理器 --> 
<bean id="rememberMeManager"  
class="org.apache.shiro.web.mgt.CookieRememberMeManager"> 
  <property name="cipherKey" value=" 
#{T(org.apache.shiro.codec.Base64).decode('4AvVhmFLUs0KTA3Kprsdag==')}"/> 
   <property name="cookie" ref="rememberMeCookie"/> 
</bean> 

rememberMe管理器,cipherKey是加密rememberMe Cookie的密鑰;默認(rèn)AES算法; 

Java代碼  

<!-- 安全管理器 --> 
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 
…… 
  <property name="rememberMeManager" ref="rememberMeManager"/> 
</bean> 

設(shè)置securityManager安全管理器的rememberMeManager;  

Java代碼  

<bean id="formAuthenticationFilter"  
class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"> 
  …… 
  <property name="rememberMeParam" value="rememberMe"/> 
</bean>  

rememberMeParam,即rememberMe請(qǐng)求參數(shù)名,請(qǐng)求參數(shù)是boolean類型,true表示rememberMe。  

Java代碼  

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 
  …… 
  <property name="filterChainDefinitions"> 
    <value> 
      /login.jsp = authc 
      /logout = logout 
      /authenticated.jsp = authc 
      /** = user 
    </value> 
  </property> 
</bean> 

 “/authenticated.jsp = authc”表示訪問(wèn)該地址用戶必須身份驗(yàn)證通過(guò)(Subject. isAuthenticated()==true);而“/** = user”表示訪問(wèn)該地址的用戶是身份驗(yàn)證通過(guò)或RememberMe登錄的都可以。 

測(cè)試:

1、訪問(wèn)http://localhost:8080/chapter13/,會(huì)跳轉(zhuǎn)到登錄頁(yè)面,登錄成功后會(huì)設(shè)置會(huì)話及rememberMe Cookie;

2、關(guān)閉瀏覽器,此時(shí)會(huì)話cookie將失效;

3、然后重新打開瀏覽器訪問(wèn)http://localhost:8080/chapter13/,還是可以訪問(wèn)的;

4、如果此時(shí)訪問(wèn)http://localhost:8080/chapter13/authenticated.jsp,會(huì)跳轉(zhuǎn)到登錄頁(yè)面重新進(jìn)行身份驗(yàn)證。 

如果要自己做RememeberMe,需要在登錄之前這樣創(chuàng)建Token:UsernamePasswordToken(用戶名,密碼,是否記住我),如:

Java代碼  

Subject subject = SecurityUtils.getSubject(); 
UsernamePasswordToken token = new UsernamePasswordToken(username, password); 
token.setRememberMe(true); 
subject.login(token);  

subject.isAuthenticated()表示用戶進(jìn)行了身份驗(yàn)證登錄的,即使有Subject.login進(jìn)行了登錄;subject.isRemembered():表示用戶是通過(guò)記住我登錄的,此時(shí)可能并不是真正的你(如你的朋友使用你的電腦,或者你的cookie被竊?。┰谠L問(wèn)的;且兩者二選一,即subject.isAuthenticated()==true,則subject.isRemembered()==false;反之一樣。 

另外對(duì)于過(guò)濾器,一般這樣使用:

訪問(wèn)一般網(wǎng)頁(yè),如個(gè)人在主頁(yè)之類的,我們使用user攔截器即可,user攔截器只要用戶登錄(isRemembered()==true or isAuthenticated()==true)過(guò)即可訪問(wèn)成功;

訪問(wèn)特殊網(wǎng)頁(yè),如我的訂單,提交訂單頁(yè)面,我們使用authc攔截器即可,authc攔截器會(huì)判斷用戶是否是通過(guò)Subject.login(isAuthenticated()==true)登錄的,如果是才放行,否則會(huì)跳轉(zhuǎn)到登錄頁(yè)面叫你重新登錄。 

因此RememberMe使用過(guò)程中,需要配合相應(yīng)的攔截器來(lái)實(shí)現(xiàn)相應(yīng)的功能,用錯(cuò)了攔截器可能就不能滿足你的需求了。

總結(jié)

以上所述是小編給大家介紹的shiro之記住登錄信息,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 以武俠形式理解Java LinkedList源碼

    以武俠形式理解Java LinkedList源碼

    鏈表(Linked list)是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的地址
    2021-11-11
  • JVM的類加載過(guò)程以及雙親委派模型詳解

    JVM的類加載過(guò)程以及雙親委派模型詳解

    這篇文章主要介紹了JVM的類加載過(guò)程以及雙親委派模型詳解,類加載器就是根據(jù)指定全限定名稱將 class 文件加載到 JVM 內(nèi)存,然后再轉(zhuǎn)化為 class 對(duì)象。,需要的朋友可以參考下
    2019-06-06
  • java編寫屬于自己的線程池

    java編寫屬于自己的線程池

    這篇文章主要為大家詳細(xì)介紹了java編寫屬于自己的線程池,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 一文詳解Java中的Stream的匯總和分組操作

    一文詳解Java中的Stream的匯總和分組操作

    這篇文章主要為大家詳細(xì)介紹了Java8中的Stream的匯總和分組的操作,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-09-09
  • SpringBoot+WebSocket實(shí)現(xiàn)即時(shí)通訊功能(Spring方式)

    SpringBoot+WebSocket實(shí)現(xiàn)即時(shí)通訊功能(Spring方式)

    今天給大家分享一個(gè)SpringBoot+WebSocket實(shí)現(xiàn)即時(shí)通訊功能(Spring方式),WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議,文章通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • IDEA項(xiàng)目代碼上傳gitlab遠(yuǎn)程倉(cāng)庫(kù)過(guò)程圖解

    IDEA項(xiàng)目代碼上傳gitlab遠(yuǎn)程倉(cāng)庫(kù)過(guò)程圖解

    這篇文章主要介紹了IDEA項(xiàng)目代碼上傳gitlab遠(yuǎn)程倉(cāng)庫(kù)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java發(fā)送HttpClient請(qǐng)求及接收請(qǐng)求結(jié)果過(guò)程的簡(jiǎn)單實(shí)例

    java發(fā)送HttpClient請(qǐng)求及接收請(qǐng)求結(jié)果過(guò)程的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇java發(fā)送HttpClient請(qǐng)求及接收請(qǐng)求結(jié)果過(guò)程的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • stream中使用peek一些陷阱避免及解決方法

    stream中使用peek一些陷阱避免及解決方法

    這篇文章主要為大家介紹了stream中使用peek一些陷阱避免及解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 老生常談Scanner的基本用法

    老生常談Scanner的基本用法

    下面小編就為大家?guī)?lái)一篇老生常談Scanner的基本用法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Mybatis如何構(gòu)建SQL語(yǔ)句

    Mybatis如何構(gòu)建SQL語(yǔ)句

    這篇文章主要介紹了Mybatis如何構(gòu)建SQL語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論

汝南县| 新晃| 安顺市| 垫江县| 南投县| 甘洛县| 玉田县| 玉田县| 全南县| 大港区| 连云港市| 利津县| 包头市| 尖扎县| 名山县| 吕梁市| 开平市| 赣州市| 常宁市| 富川| 新乡县| 康保县| 荆州市| 尚义县| 额敏县| 黑龙江省| 扶绥县| 宁强县| 商南县| 大邑县| 江都市| 仙游县| 临猗县| 景泰县| 镇原县| 岳普湖县| 嘉禾县| 四会市| 南平市| 南丹县| 嘉善县|