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

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - shiro之記住登錄信息

shiro之記住登錄信息

2021-01-07 13:49動力節點 Java教程

Shiro提供了記住我(RememberMe)的功能,當關閉瀏覽器時下次再次打開還能記住你的信息,下面小編給大家分享shiro之記住登錄信息的相關知識,感興趣的朋友一起看看吧

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

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

2、關閉瀏覽器再重新打開;會發現瀏覽器還是記住你的;

3、訪問一般的網頁服務器端還是知道你是誰,且能正常訪問;

4、但是比如我們訪問淘寶時,如果要查看我的訂單或進行支付時,此時還是需要再進行身份認證的,以確保當前用戶還是你。

RememberMe配置 

spring-shiro-web.xml配置:

Java代碼  

?
1
2
3
4
5
6
7
8
9
10
11
<!-- 會話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表示瀏覽器關閉時失效此Cookie;

rememberMeCookie:即記住我的Cookie,保存時長30天;  

Java代碼  

?
1
2
3
4
5
6
7
<!-- 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的密鑰;默認AES算法; 

Java代碼  

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

設置securityManager安全管理器的rememberMeManager;  

Java代碼  

?
1
2
3
4
5
<bean id="formAuthenticationFilter"
class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">
  ……
  <property name="rememberMeParam" value="rememberMe"/>
</bean>

rememberMeParam,即rememberMe請求參數名,請求參數是boolean類型,true表示rememberMe。  

Java代碼  

?
1
2
3
4
5
6
7
8
9
10
11
<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”表示訪問該地址用戶必須身份驗證通過(Subject. isAuthenticated()==true);而“/** = user”表示訪問該地址的用戶是身份驗證通過或RememberMe登錄的都可以。 

測試:

1、訪問http://localhost:8080/chapter13/,會跳轉到登錄頁面,登錄成功后會設置會話及rememberMe Cookie;

2、關閉瀏覽器,此時會話cookie將失效;

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

4、如果此時訪問http://localhost:8080/chapter13/authenticated.jsp,會跳轉到登錄頁面重新進行身份驗證。 

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

Java代碼  

?
1
2
3
4
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token.setRememberMe(true);
subject.login(token);

subject.isAuthenticated()表示用戶進行了身份驗證登錄的,即使有Subject.login進行了登錄;subject.isRemembered():表示用戶是通過記住我登錄的,此時可能并不是真正的你(如你的朋友使用你的電腦,或者你的cookie被竊取)在訪問的;且兩者二選一,即subject.isAuthenticated()==true,則subject.isRemembered()==false;反之一樣。 

另外對于過濾器,一般這樣使用:

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

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

因此RememberMe使用過程中,需要配合相應的攔截器來實現相應的功能,用錯了攔截器可能就不能滿足你的需求了。

總結

以上所述是小編給大家介紹的shiro之記住登錄信息,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.sina.com.cn/s/blog_9c6852670102wwg6.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色婷婷影院在线视频免费播放 | 国产成+人+综合+亚洲欧美丁香花 | 日本全黄三级在线观看 | 肉文小说 | 九九精品免视看国产成人 | 我与岳乱短篇小说 | 国产欧美日韩亚洲精品区2345 | 欧美日韩亚洲高清不卡一区二区三区 | 日韩在线观看一区二区不卡视频 | fc2免费人成为视频 eeuss18影院www国产 | 国产美女在线一区二区三区 | 免费国产午夜高清在线视频 | 青草欧美| 国产小视频在线免费 | 亚洲视频一区二区在线观看 | 吃瓜视频在线观看 | 国产欧美视频在线观看 | 男人狂躁女人下面狂叫图片 | 欧美亚洲另类在线观看 | 久久免费国产视频 | 国产盗摄美女嘘嘘视频 | 色偷偷亚洲男人 | ai换脸杨颖被啪在线观看 | 国产精品成人在线播放 | 日本不卡视频免费的 | 91麻豆精品激情在线观看最新 | 欧美黑人成人免费全部 | 厨房高h | 成年人视频免费在线播放 | 免费看a片毛片 | 欧美乱码视频 | 青青草成人在线观看 | 无码AV免费精品一区二区三区 | 亚洲日本va午夜中文字幕 | 91porny紧身翘臀 | 秋霞午夜视频在线观看 | 国产精品福利在线观看免费不卡 | 无人在线视频高清免费观看动漫 | 欧美日韩一区二区三区韩大 | 亚洲丰满模特裸做爰 | 香蕉免费一区二区三区在线观看 |