1. 程式人生 > >RememberMe記住我功能實現

RememberMe記住我功能實現

【1】認證和記住我

① 記住我

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

  • 首先在登入頁面選中RememberMe然後登入成功;如果是瀏覽器登入,一般會把RememberMe的Cookie 寫到客戶端並儲存下來;
  • 關閉瀏覽器再重新開啟;會發現瀏覽器還是記住你的;
  • 訪問一般的網頁伺服器端還是知道你是誰,且能正常訪問;
  • 但是比如我們訪問淘寶時,如果要檢視我的訂單或進行支付時,此時還是需要再進行身份認證的,以確保當前使用者還是你。

② 認證

subject.isAuthenticated() 表示使用者進行了身份驗證登入的,即使用Subject.login進行了登入。

subject.isRemembered()表示使用者是通過記住我登入的,此時可能並不是真正的你(如你的朋友使用你的電腦,或者你的cookie 被竊取)在訪問的。

③ 建議

訪問一般網頁:如個人在主頁之類的,我們使用user 攔截器即可,user 攔截器只要使用者登入(isRemembered() || isAuthenticated())過即可訪問成功。

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

【2】實現記住我功能

如果要自己做RememeberMe,程式碼例項如下:

 UsernamePasswordToken token = new UsernamePasswordToken(userName, password);
 token.setRememberMe(true);

XML配置如下:

 	<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
		<constructor-arg value="rememberMe"/>
		<property name="httpOnly" value="true"/>
		<!-- 30天-->
		<property name="maxAge" value="2592000"/>
	</bean>
	
	<!-- 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>
	 <!-- 安全管理器 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <!-- 注入快取管理器 -->
        <property name="cacheManager" ref="cacheManager"/>
        <property name="authenticator" ref="authenticator" />
        <property name="realms">
        	<list>
    			<ref bean="customRealm"/>
    		</list>
        </property>
        <property name="sessionManager" ref="sessionManager" />
        <property name="rememberMeManager" ref="rememberMeManager" />
    </bean>

你可能需要在登入頁面新增一個記住我複選框,根據該複選框的狀態在後臺判斷是否設定token.setRememberMe(true);

相關推薦

Shiro - RememberMe記住功能實現

【1】認證和記住我 ① 記住我 Shiro提供了記住我(RememberMe)的功能,比如訪問如淘寶等一些網站時,關閉了瀏覽器,下次再開啟時還是能記住你是誰,下次訪問時無需再登入即可訪問,基本流程如下: 首先在登入頁面選中RememberMe然後登入成功;如果是瀏覽器

RememberMe記住功能實現

【1】認證和記住我 ① 記住我 Shiro提供了記住我(RememberMe)的功能,比如訪問如淘寶等一些網站時,關閉了瀏覽器,下次再開啟時還是能記住你是誰,下次訪問時無需再登入即可訪問,基本流程如下: 首先在登入頁面選中RememberMe然後登入成功;如果

登入記住功能實現

說明 前端設計 引用檔案 <script src="js/jquery.cookie.js"></script> jsp頁面一載入就執行判斷cookie中

SpringBoot學習:整合shiro自動登入功能rememberMe記住功能

首先在shiro配置類中注入rememberMe管理器 /** * cookie物件; * rememberMeCookie()方法是設定Cookie的生成模版,比如cookie的name,cookie的有效時間等等。 * @return */ @Bean public

記住 功能實現

大家都知道pc端在系統登入時有一個類似於【記住我】的功能 ,做開發半年我沒有接觸過cookie,覺得可能很難,今天剛好自己抽幾分鐘時間學習了一下,發現很基本,在這裡也就算給一些學習者寫一個實現方法吧,分享出來大家批評指教: 登入頁面,記住我複選框 <td>

SpringSecurity(2)---記住功能實現

# SpringSecurity(2)---記住我功能實現 上一篇部落格實現了認證+授權的基本功能,這裡在這個基礎上,新增一個 **記住我的功能**。 上一篇部落格地址:[SpringSecurity(1)---認證+授權程式碼實現](https://www.cnblogs.com/qdhxhz/p/12

Spring Security、實現圖形驗證碼功能實現"記住"功能

說在前面 博主最近會有很多專案跟大家一起分享,做完後會上傳github上的,希望讀友們能給博主提提意見哈哈 這個專案是第三方登入和安全方面的,關於後臺與a

shiro中記住功能

pac 用戶 網頁服務器 tao 流程 word 朋友 value sda Shiro提供了記住我(RememberMe)的功能,比如訪問如淘寶等一些網站時,關閉了瀏覽器下次再打開時還是能記住你是誰,下次訪問時無需再登錄即可訪問,基本流程如下: 1、首先在登錄頁面選中Rem

5. Spring Boot + Spring Security 記住功能

個人理解:整合spring security框架,只需要簡單的配置即可 基本流程: 瀏覽器認證使用者名稱密碼請求,認證成功後,有一個TOkenRepository 來儲存使用者名稱和密碼,並且儲存到自動

SpringSecurity(七)新增記住功能

記住我基本原理 使用者認證成功後呼叫RemeberMeService服務,這個服務裡有一個TokenRepository,它會生成一個Token寫入瀏覽器Cookie,同時它還會使用TokenRepository將Token和使用者名稱寫入到資料庫中。 當用戶再次訪問

登入時記住密碼功能實現js

css: .checkActive { background: url(../images/right.png) no-repeat; border: 1px solid #41b3

spring-Security(三):記住實現下次免登入

記住我基本原理使用者認證成功之後呼叫RemeberMeService根據使用者名稱名生成Token由TokenRepository寫入到資料庫,同時也將Token寫入到瀏覽器的Cookie中重啟服務之後,使用者再次登入系統會由RememberMeAuthenticationF

SpringBoot學習:整合shiro(rememberMe記住後自動登入session失效解決辦法)

專案下載地址:http://download.csdn.NET/detail/aqsunkai/9805821 定義一個攔截器,判斷使用者是通過記住我登入時,查詢資料庫後臺自動登入,同時把使用者放入session中。 配置攔截器也很簡單,Spring 為此提供了基礎類Web

SpringBootSecurity學習(10)網頁版登入之記住功能

場景 很多登入都有記住我這個功能,在使用者登陸一次以後,系統會記住使用者一段時間,在這段時間,使用者不用反覆登陸就可以使用我們的系統。記住使用者功能的基本原理如下圖: 使用者登入的時候,請求傳送給過濾器UsernamePasswordAuthenticationFilter,當該過濾器認證成功後,會呼叫R

【jQuery】利用jQuery實現記住”的功能

jquer sms sep jquery實現 .com script lis put bar 【1】先下載jQuery.cookie插件:使用幫助請參考鏈接(https://github.com/carhartl/jquery-cookie)。 【2】安裝插件:

[JavaScript] session、cookie與“記住的登入狀態”的功能實現

Cookie的機制      Cookie是瀏覽器(User Agent)訪問一些網站後,這些網站存放在客戶端的一組資料,用於使網站等跟蹤使用者,實現使用者自定義功能。      Cookie的Domain和Path屬性標識了這個Cookie是哪一個網站傳送給瀏覽器的;Cookie的Expires屬性標識了

記住remember-me功能的幾種實現方式

        本文討論幾種記住我功能的實現方式。         原理:使用者登入後,服務端為使用者生成一個Token,並放入客戶端Cookie中。下次使用者登入,服務端驗證Cookie中的Token並自動登入。 簡單的Token生成方法            Tok

Spring Security框架下實現兩週內自動登入"記住"功能

本文是Spring Security系列中的一篇。在上一篇文章中,我們通過實現UserDetailsService和UserDetails介面,實現了動態的從資料庫載入使用者、角色、許可權相關資訊,從而實現了登入及授權相關的功能。這一節就在此基礎上新增,登入過程中經常使用的“記住我”功能,也就是我們經常會

Java使用SSM框架實現登錄頁面記住密碼功能

turn 頁面 賦值 ++ mage login ring 實現 member 最終效果展示: 1、登錄頁面JSP代碼 <label class="checkbox"> <input type="checkbox" name="remembe

近期在看的一段JS(誰能看出實現什麼功能)

示例程式碼: <script type="text/javascript"> !function(){ var e=/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.baidu\.com)/gi, r=window.location.href,