成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊我們?yōu)槭裁匆O計匿名用戶

開發(fā) 架構
匿名用戶是很多同學不理解的一個概念,這一章胖哥嘗試來解讀一下匿名用戶,希望能幫你更好的理解這個概念。

匿名用戶是很多同學不理解的一個概念,這一章胖哥嘗試來解讀一下匿名用戶,希望能幫你更好的理解這個概念。

流程一致性

通常情況下所有的資源訪問都應該是有條件的。用來驗證這些條件的流程也應該是一致的。我們來看實際生活中的一個例子,老王是一家公司的老板,他的車進地下車庫是免費的,其他人進地下車庫是計費的。我們來思考如何實現這個需求。

如果流程不一致的話,需要兩條道,一條是VIP通道(讓老王走),一條是大眾通道(給其他人用),這兩個通道的維護成本會很高,還有人會經常走錯道,甚至招致不滿,憑啥他要搞特權;如果流程一致,這事就好辦多了,不管是誰都得按同一個通道流程進入停車場,只需要維護一個VIP標簽就行了,成本大大降低,流程也簡化了,還顯得老王沒有架子。這個VIP標簽就是所謂的“匿名用戶”。

Spring Security匿名用戶

Spring Security中專門設計了匿名用戶,它的作用其實也是為了在保證流程一致的前提下去執(zhí)行一些特殊的認證邏輯,比如程序的登錄、主頁的數據接口,這些未認證的用戶場景需要繞過訪問控制檢查,通過引入一個特殊的“匿名身份”可以做到這一點,匿名用戶可以做什么、不可以做什么都可以輕松定義, 這就是我們所說的匿名身份驗證。

請注意:“經過匿名身份驗證”的用戶和未經身份驗證的用戶之間沒有真正的差異,你可以認為匿名用戶就是未認證用戶,你也可以認為匿名用戶是執(zhí)行了匿名認證流程后的認證用戶。

匿名用戶的配置

匿名用戶是認證體系最后的一道認證流程,負責匿名認證的過濾器是AnonymousAuthenticationFilter,當發(fā)現請求不具備任何其它認證條件后,會生成一個AnonymousAuthenticationToken,它包含三個屬性:

keyHash 僅僅在AnonymousAuthenticationFilter和AnonymousAuthenticationProvider之間共享, 以避免一些惡意客戶端去偽造AnonymousAuthenticationToken。

權限控制只需要針對ROLE_ANONYMOUS進行限制即可,也可以通過認證投票器AuthenticatedVoter的IS_AUTHENTICATED_ANONYMOUSLY屬性來限制。

下面這幾種配置都可以用來控制匿名用戶的訪問權限:

http
.authorizeRequests()
.mvcMatchers("/anonymous0").access("hasAuthority('ROLE_USER')")
.mvcMatchers("/anonymous1").hasAuthority("ROLE_ANONYMOUS")
.mvcMatchers("/anonymous2").hasRole("ANONYMOUS")
.mvcMatchers("/anonymous3").access("isAnonymous()")
.mvcMatchers("/anonymous4").access("IS_AUTHENTICATED_ANONYMOUSLY")
.mvcMatchers("/anonymous5").anonymous()

獲取匿名用戶

Spring MVC中使用它自己的參數解析器來獲取當前Principal:

@GetMapping("/")
public String method(Authentication authentication) {
if (authentication instanceof AnonymousAuthenticationToken) {
return "anonymous";
} else {
return "not anonymous";
}
}

以上方式將永遠返回not anonymous,即使是匿名請求。如果您想獲取匿名請求的Authentication,請改用@CurrentSecurityContext:

@GetMapping("/")
public String method(@CurrentSecurityContext SecurityContext context) {
Authentication authentication = context.getAuthentication()
if (authentication instanceof AnonymousAuthenticationToken) {
return "anonymous";
} else {
return "not anonymous";
}
}

你想一想還有沒有其它方式去獲得匿名用戶?



責任編輯:武曉燕 來源: 碼農小胖哥
相關推薦

2017-04-05 16:40:45

2010-11-03 09:22:00

C語言

2014-05-30 15:56:26

iOS 8WWDC2014

2021-01-26 05:37:08

分庫分表內存

2021-05-17 08:20:22

職場晉升轉型

2021-06-21 10:04:12

微軟密碼Arsenault

2023-12-08 10:59:49

2016-08-22 13:31:05

前端架構前后端分離

2015-02-26 09:41:50

2015-08-03 10:40:45

動效設計優(yōu)勢

2019-07-30 15:50:00

2020-01-18 09:35:03

微服務團隊架構

2015-11-02 09:19:10

程序員JavaScript

2022-06-02 08:48:39

Go枚舉器Iota

2019-11-15 13:10:17

潘石屹Python語言

2020-11-12 18:13:21

辦公

2012-04-11 09:19:08

Haskell編程

2025-06-18 08:20:00

Redis數據庫線程

2009-09-07 16:45:54

.NET代碼設計

2019-11-06 09:24:25

量子芯片網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜av在线| 91精品久久久久久久 | 91麻豆精品国产91久久久久久 | 91麻豆精品国产91久久久久久 | 国产日韩一区二区三区 | 色视频网站在线观看 | 成人a视频片观看免费 | 欧美中文字幕一区 | 免费成人国产 | 日韩一区二区在线观看 | 欧美精产国品一二三区 | 久久成人人人人精品欧 | 另类专区亚洲 | 在线第一页 | 欧美一区二区三区国产精品 | 黄色免费在线观看网站 | 国产欧美日韩精品一区二区三区 | 国产做a爱片久久毛片 | 黄色网络在线观看 | 国产色在线 | 亚洲视频在线观看一区二区三区 | 国产精品久久久久久久久久妇女 | 伊人激情网 | 欧美成年黄网站色视频 | 亚洲欧美日韩精品久久亚洲区 | 尤物视频在线免费观看 | 欧美日韩国产精品激情在线播放 | 午夜激情视频 | 国产一区二区三区色淫影院 | 不卡一区二区三区四区 | 精品视频在线观看 | 亚洲美女天堂网 | 四色永久| 欧美综合一区二区 | 欧美国产日韩精品 | 精品国产乱码久久久久久88av | 噜久寡妇噜噜久久寡妇 | 国产激情视频 | 激情小说综合网 | 一级欧美日韩 | 亚洲视频在线免费观看 |