电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot--- SpringSecurity進行注銷權限控制的配置方法

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

環境

IDEA :2020.1

Maven:3.5.6

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

1、注銷

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

毫無疑問,注銷也是在這樣的情況下進行的。

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

同樣注銷操作也是要帶有 _csrf 參數認證的。

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

我們把它做成一個表單按鈕,同時采用 POST 方法傳輸,使用 SpringSecurity 提供的默認 /logout 方法進行登出注銷。

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

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

.and() //這里采用鏈式編程 .logout() .logoutSuccessUrl('/index') //注銷成功后,調轉的頁面 /* .logoutUrl() 配置自己的注銷URL,默認為 /logout .invalidateHttpSession() 是否銷毀session,默認ture .deleteCookies() 刪除指定的cookies

銷毀session 相信很容易理解,一次對話,可以注銷關閉,或者關閉頁面會自動銷毀。

記住我

cookies 需要重點介紹一下,這也是我們常用的記住我,在關閉頁面或瀏覽器之后,下次打開頁面時,是以之前登錄的用戶登錄的。

為此,我們需要在登錄表單增加記住我選項

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

同時在配置類開啟記住我。

.and() .rememberMe();

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

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

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

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

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

瀏覽器登錄,選用記住我

SpringBoot--- SpringSecurity進行注銷權限控制的配置方法

登錄后, F12,查看 cookies

SpringBoot--- SpringSecurity進行注銷權限控制的配置方法

第一個為 cookies,第二個則是此次會話的 session 對象。

可以看到 cookies 是有限期的,默認為 14 天。

點擊注銷。

SpringBoot--- SpringSecurity進行注銷權限控制的配置方法

由于配置了刪除 cookies,cookies 已經被刪除。

重新登錄,這次沒有選記住我,同時 session 也已經不是同一個,值已經改變了。

SpringBoot--- SpringSecurity進行注銷權限控制的配置方法

2、權限控制

同時,頁面還有一個重要的需求沒有實現。

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

對此,我們可以結合 Thymeleaf 和 SpringSecurity 實現哪些用戶可以看到哪些內容。

首先,我們要導入 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>

同時還要在頁面標簽導入命名空間

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

在頁面下把需要權限限制的內容包起來

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

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

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

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

sec:authentication='name' 表示獲取認證的用戶的用戶名。

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

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

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

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

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

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

SpringBoot--- SpringSecurity進行注銷權限控制的配置方法

SpringSecurity 都有為我們提供。

到此這篇關于SpringBoot--- SpringSecurity進行注銷,權限控制的文章就介紹到這了,更多相關SpringSecurity注銷 權限控制內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 必胜高考网_全国高考备考和志愿填报信息平台 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 无痕胶_可移胶_无痕双面胶带_可移无痕胶厂家-东莞凯峰 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 纳米二氧化硅,白炭黑,阴离子乳化剂-臻丽拾科技 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 耐高温电缆厂家-远洋高温电缆 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 陕西鹏展科技有限公司 | 超声波反应釜【百科】-以马内利仪器 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 大鼠骨髓内皮祖细胞-小鼠神经元-无锡欣润生物科技有限公司 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 密集架-手摇-智能-移动-价格_内蒙古档案密集架生产厂家 | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 | 一航网络-软件测评官网 | 中山市派格家具有限公司【官网】 | 环境模拟实验室_液体-气体控温机_气体控温箱_无锡双润冷却科技有限公司 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 液晶拼接屏厂家_拼接屏品牌_拼接屏价格_监控大屏—北京维康 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 |