欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

springsecurity實(shí)現(xiàn)下次自動(dòng)登錄功能過程解析

這篇文章主要介紹了spring security實(shí)現(xiàn)記住我下次自動(dòng)登錄功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

創(chuàng)新互聯(lián)公司專注于淇縣企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站制作。淇縣網(wǎng)站建設(shè)公司,為淇縣等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

一、原理分析

第一次登陸時(shí),如果用戶勾選了readme選項(xiàng),登陸成功后springsecurity會(huì)生成一個(gè)cookie返回給瀏覽器端,瀏覽器下次訪問時(shí)如果攜帶了這個(gè)cookie,springsecurity就會(huì)放行這次訪問。

二、實(shí)現(xiàn)方式

2.1 簡(jiǎn)單實(shí)現(xiàn)方式

(1) 在springsecurity的配置文件中,http節(jié)點(diǎn)下增加一個(gè)remember-me配置

<security:http auto-config="true" use-expressions="false">
  <!-- 配置鏈接地址,表示任意路徑都需要ROLE_USER權(quán)限,這里可以配置
   一個(gè)逗號(hào)隔開的角色列表-->
  <security:intercept-url pattern="/**" access="ROLE_USER"/>

  <!--自定義登錄頁面-->
  <security:form-login login-page="/login.html" login-processing-url="/login"
        username-parameter="username" password-parameter="password"
        authentication-failure-forward-url="/failed.html"
        default-target-url="/index.html"

  />
  <!--關(guān)閉csrf,默認(rèn)是開啟的-->
  <security:csrf disabled="true"/>

  <security:remember-me remember-me-parameter="remembermeParamater" />
  <!-- 退出 -->
  <security:logout invalidate-session="true" logout-url="/logout.do" logout-success-url="/login.html"/>
 </security:http>

其中remember-me-parameter="remembermeParamater"指定前臺(tái)傳遞的是否rememberme的參數(shù)名,前臺(tái)要傳遞的參數(shù)值是true或false

(2)前臺(tái)登錄頁面上增加一個(gè)checkbox

<form action="/login" method="post">
  用戶名:<input type="text" name="username" placeholder="請(qǐng)輸入用戶名"><br>
  密 碼:<input type="password" name="password" placeholder="請(qǐng)輸入密碼"><br>
  記住我:<input id="_spring_security_remember_me" type="checkbox" name="remembermeParamater" value="true">
  <input type="submit" value="登錄">
 </form>

checkbox的name屬性要和上邊配置文件中的remember-me-parameter="remembermeParamater"保持一致。

(3)測(cè)試

啟動(dòng)工程,進(jìn)行登錄,登錄成功后觀察cookie,會(huì)發(fā)現(xiàn)服務(wù)器端返回了一個(gè)名為remember-me的cookie

spring security實(shí)現(xiàn)下次自動(dòng)登錄功能過程解析

現(xiàn)在關(guān)閉瀏覽器,再次打開并訪問,只要不清除cookie就可以直接訪問資源,不需要重新登錄。

這種方式有個(gè)弊端,瀏覽器端要攜帶的這個(gè)cookie值服務(wù)端是存放在內(nèi)存中的,并沒有進(jìn)行持久化,所以如果服務(wù)重啟后服務(wù)器端存儲(chǔ)的這個(gè)值就會(huì)丟失,瀏覽器端的rememberme就會(huì)失效。為了解決這個(gè)問題就需要將服務(wù)器端生成的這個(gè)cookie值持久化到數(shù)據(jù)庫中。

2.2 數(shù)據(jù)庫實(shí)現(xiàn)方式

(1)創(chuàng)建一張表用來持久化rememberme的記錄

-- 創(chuàng)建記錄rememberme記錄的表

CREATE TABLE persistent_logins
(
 username VARCHAR(64),
 series VARCHAR(64),
 token  VARCHAR(64),
 last_used DATE 
 );

(2)將spring-security 配置文件中的rememberme標(biāo)簽的內(nèi)容改為如下內(nèi)容

<security:remember-me remember-me-parameter="remembermeParamater" data-source-ref="dataSource"
        token-validity-seconds="86400"/>

data-source-ref="dataSource"用來指定數(shù)據(jù)源,spring-security通過數(shù)據(jù)源來操作數(shù)據(jù)庫中的persistent_logins表

token-validity-seconds表示rememberme的有效時(shí)間,以秒為單位,這里的86400=24*3600表示一天

(3)測(cè)試

啟動(dòng)工程,進(jìn)行登錄,登錄成功后會(huì)在persistent_logins表中生成一條記錄,

spring security實(shí)現(xiàn)下次自動(dòng)登錄功能過程解析

關(guān)閉瀏覽器再次訪問時(shí)會(huì)根據(jù)瀏覽器中攜帶的cookie值來查找數(shù)據(jù)庫中的這條記錄,如果查詢到了就認(rèn)證通過

三、區(qū)分是密碼登錄還是rememberme登錄

在用戶進(jìn)行一些敏感操作時(shí),需要區(qū)分是否是rememberme登錄,如果是需要讓用戶跳轉(zhuǎn)到登錄頁面。

在congtroller層提供一個(gè)方法來進(jìn)行判斷

@GetMapping("/isRemembermeUser")
public boolean isRemembermeUser(){
 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
 if(authentication==null){
  return false;
 }
 //判斷當(dāng)前用戶是否是通過rememberme登錄,是返回true,否返回false
 return RememberMeAuthenticationToken.class.isAssignableFrom(authentication.getClass());
}

先使用密碼登錄,訪問http://localhost/user/isRemembermeUser.do,后臺(tái)接口返回false,再關(guān)閉瀏覽器再次訪問這個(gè)地址,后臺(tái)接口返回true,表示這次是使用rememberme進(jìn)行的認(rèn)證。

測(cè)試工程代碼的地址:工程示例

當(dāng)前文章:springsecurity實(shí)現(xiàn)下次自動(dòng)登錄功能過程解析
分享地址:http://aaarwkj.com/article24/pjcpje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化標(biāo)簽優(yōu)化、App開發(fā)網(wǎng)站設(shè)計(jì)公司、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
日韩精品在线观看你懂的| 女人的天堂av免费在线观看| 蜜臀在线观看免费视频| 亚洲欧美日韩精品区| 快播av手机在线播放| 久久久国产精品9999综合| 国产亚洲欧美日韩看国产| 三级久久三级久久三级| 人妻少妇av免费久久蜜臀| 91精品国内手机在线高清| 亚洲一区在线观看蜜臀| 99久在线观看精品视频| 初爱视频教程完整版韩国| 一区二区三区免费视频少妇| 日韩不卡的一区免费视频| 国产性做爰片免费视频| 久久久久四虎国产精品| 欧美一级黄色免费电影| 日韩美女搞黄色的网站| 日本国内一区二区三区四区视频| 欧美性大片免费在线观看| 中文字幕日韩手机在线| 日韩精品熟女一区二区三区| 欧美特黄大片在线观看| 久久青草精品欧美日韩精品| 国产一区二区精品不卡| 麻豆国产传媒69国产| 日韩欧美亚洲另类视频| 日韩精品熟妻人女亚洲一区| 亚洲乱人伦一区二区三区| 国产一区二区欧美久久| 99久久精品人妻少妇一| 偷拍视频在线一区二区| 99久久免费看国产精品| 欧美特黄在线免费观看| 欧美日韩视频在线第一页| 日韩国产在线一区二区| 丝袜美腿美女日韩在线| 国产综合中文字幕不卡| 亚洲午夜福利理论片在线| 日韩暴露一区二区三区|