国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot--- SpringSecurity進(jìn)行注銷權(quán)限控制的配置方法

瀏覽:5日期:2023-05-01 10:58:42

環(huán)境

IDEA :2020.1

Maven:3.5.6

SpringBoot: 2.0.9 (與此前整合的版本2.3.3 不同,版本適配問題,為配合使用降級(jí))

1、注銷

這里也有一個(gè)前提問題需要注意,我們登錄操作都是在開啟防跨域攻擊的環(huán)境下進(jìn)行的。

毫無疑問,注銷也是在這樣的情況下進(jìn)行的。

登錄時(shí)我們提交表單,采用 POST 方法傳輸,通過使用 Thymeleaf 在 form 表單添加 th:action 元素,Thymeleaf 會(huì)自動(dòng)為我們添加 _csrf 元素。

同樣注銷操作也是要帶有 _csrf 參數(shù)認(rèn)證的。

<form th:action='@{/logout}' method='post'><button type='submit' >注銷</button></form>

我們把它做成一個(gè)表單按鈕,同時(shí)采用 POST 方法傳輸,使用 SpringSecurity 提供的默認(rèn) /logout 方法進(jìn)行登出注銷。

開發(fā)者是不需要在 Controller 配置這個(gè) /logout 方法處理的,和 /login 一樣,這是由 SpringSecurity 提供的。

我們需要在之前登陸的配置類配置登出的各種屬性即可。

.and() //這里采用鏈?zhǔn)骄幊? .logout() .logoutSuccessUrl('/index') //注銷成功后,調(diào)轉(zhuǎn)的頁面 /* .logoutUrl() 配置自己的注銷URL,默認(rèn)為 /logout .invalidateHttpSession() 是否銷毀session,默認(rèn)ture .deleteCookies() 刪除指定的cookies

銷毀session 相信很容易理解,一次對(duì)話,可以注銷關(guān)閉,或者關(guān)閉頁面會(huì)自動(dòng)銷毀。

記住我

cookies 需要重點(diǎn)介紹一下,這也是我們常用的記住我,在關(guān)閉頁面或?yàn)g覽器之后,下次打開頁面時(shí),是以之前登錄的用戶登錄的。

為此,我們需要在登錄表單增加記住我選項(xiàng)

tr><td><input type='checkbox' name='remember-me'></td><td>Remember me on this computer.</td></tr>

同時(shí)在配置類開啟記住我。

.and() .rememberMe();

這里 checkbox 的 name 我們使用默認(rèn)的 remember-me ,同樣這一 cookies 的 name 也會(huì)被瀏覽器記住,這樣我們只需要開啟記住我即可使用。

如果不使用 name= 'remember-me' ,而是使用其他 name 屬性值,則需要配置指定,以便 SpringSecurity 接收是否記住我。

.and() .rememberMe().rememberMeParameter('rememberme'); //接收前端自定義記住我的name<input name='rememberme'>,默認(rèn)是remember-me

回到 deleteCookies() 方法的配置上,要銷毀指定的 cookies ,我們要指定cookies 的名字即可。

.and() .logout().logoutSuccessUrl('/index').deleteCookies('remember-me') //銷毀 name='remember-me'的 cookies

瀏覽器登錄,選用記住我

SpringBoot--- SpringSecurity進(jìn)行注銷權(quán)限控制的配置方法

登錄后, F12,查看 cookies

SpringBoot--- SpringSecurity進(jìn)行注銷權(quán)限控制的配置方法

第一個(gè)為 cookies,第二個(gè)則是此次會(huì)話的 session 對(duì)象。

可以看到 cookies 是有限期的,默認(rèn)為 14 天。

點(diǎn)擊注銷。

SpringBoot--- SpringSecurity進(jìn)行注銷權(quán)限控制的配置方法

由于配置了刪除 cookies,cookies 已經(jīng)被刪除。

重新登錄,這次沒有選記住我,同時(shí) session 也已經(jīng)不是同一個(gè),值已經(jīng)改變了。

SpringBoot--- SpringSecurity進(jìn)行注銷權(quán)限控制的配置方法

2、權(quán)限控制

同時(shí),頁面還有一個(gè)重要的需求沒有實(shí)現(xiàn)。

沒有某一權(quán)限的用戶,不應(yīng)該看到點(diǎn)擊的入口(武功秘籍)。所謂得不到的最想要,你這不是擺著饞他嘛!可不能把他害咯。

對(duì)此,我們可以結(jié)合 Thymeleaf 和 SpringSecurity 實(shí)現(xiàn)哪些用戶可以看到哪些內(nèi)容。

首先,我們要導(dǎo)入 thymeleaf-springsecurity 整合的依賴

<!-- thymeleaf-springsecurity整合--><!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity4 --> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> <version>3.0.4.RELEASE</version> </dependency>

同時(shí)還要在頁面標(biāo)簽導(dǎo)入命名空間

<html xmlns:th='http://www.thymeleaf.org' xmlns:sec='https://www.thymeleaf.org/thymeleaf-extras-springsecurity4'>

在頁面下把需要權(quán)限限制的內(nèi)容包起來

<div sec:authorize='!isAuthenticated()'><h2 >游客您好,如果想查看武林秘籍<a th:href='http://www.cgvv.com.cn/bcjs/@{/toLogin}'>請(qǐng)登錄</a> </h2></div>

sec:authorize='!isAuthenticated()' 表示未登錄認(rèn)證的用戶才可以查看到的內(nèi)容。

<div sec:authorize='isAuthenticated()'><a>Count: <span sec:authentication='name'></span></a><form th:action='@{/logout}' method='post'><!--只能通過表單加 -csrf 認(rèn)證,其他(超鏈接)無法添加--><button type='submit' >注銷</button></form></div>

sec:authorize='isAuthenticated()' 表示已經(jīng)登錄認(rèn)證的用戶才可以查看到的內(nèi)容。

sec:authentication='name' 表示獲取認(rèn)證的用戶的用戶名。

唉,別忘了,重點(diǎn),有些武功秘籍不能讓沒有權(quán)限的用戶看到,比如 level2 的,像什么太極拳,七傷拳,梯云縱。哈哈哈

<div sec:authorize='hasRole(’level2’)'><h3>高級(jí)武功秘籍</h3><ul><li><a th:href='http://www.cgvv.com.cn/bcjs/@{/level2/1}'>太極拳</a></li><li><a th:href='http://www.cgvv.com.cn/bcjs/@{/level2/2}'>七傷拳</a></li><li><a th:href='http://www.cgvv.com.cn/bcjs/@{/level2/3}'>梯云縱</a></li></ul></div>

sec:authorize='hasRole(’level2’)' 規(guī)定只有 level 2 權(quán)限的用戶才能查看。

其他的可以此類推做出配置。

除此之外,還可以有其他定制化配置,權(quán)限(role),權(quán)力(authority),IP ,是否允許(permission)。

spring security 5.1.6版本,從源碼的角度可以看出使用不同的hasAuthority、hasRole方法判斷權(quán)限時(shí)的區(qū)別,其實(shí)他們最終調(diào)用的都是hasAnyAuthorityName()方法,唯一不同的就是hasRole()在調(diào)用時(shí),傳遞了前綴defaultRolePrefix,這就導(dǎo)致了他們兩者之間比較的字符產(chǎn)生了差異。spring security應(yīng)該想代表的意思就是權(quán)限字符加了ROLE_就是角色Role,如果沒有加就是一個(gè)權(quán)限Authority。

SpringBoot--- SpringSecurity進(jìn)行注銷權(quán)限控制的配置方法

SpringSecurity 都有為我們提供。

到此這篇關(guān)于SpringBoot--- SpringSecurity進(jìn)行注銷,權(quán)限控制的文章就介紹到這了,更多相關(guān)SpringSecurity注銷 權(quán)限控制內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 日本精品一区二区三区在线视频 | 中文字幕在线播 | 久久免费精品视频 | 免费在线一区二区三区 | 欧美成人乱弄视频 | 久久er热这里只有精品23 | 国产精品视频一区二区三区 | 免费视频成人国产精品网站 | 亚洲欧美视频 | 亚洲毛片在线免费观看 | 东京一区二区三区高清视频 | 国产手机精品a | 亚洲日韩视频免费观看 | 中文字幕二区三区 | 国产精品99久久久久久人 | 99精品视频在线在线视频观看 | 在线观看不卡一区 | 欧美一级大片在线观看 | 欧美激情综合亚洲五月蜜桃 | 国产精品亚洲一区二区三区久久 | 97免费公开视频 | 久久悠| 波多野结衣在线中文 | 成人精品免费网站 | 国产精品久久久久激情影院 | caoporen个人免费公开视频 | 国产高清美女一级a毛片久久 | a级毛片免费高清毛片视频 a级毛片免费高清视频 | 亚洲国产精品不卡毛片a在线 | 欧美亚洲中日韩中文字幕在线 | 香蕉久久久久 | 在线观看国产一区二区三区 | 又粗又爽又色男女乱淫播放男女 | 114一级毛片免费观看 | 免费乱淫视频 | 国产高清美女一级a毛片久久w | 黄色三级视频网站 | 久久国产国内精品对话对白 | 久久综合精品国产一区二区三区 | 黄频免费影院 | 真人毛片|