2018-07-11

SecurityContextHolder:
簡(jiǎn)述:用來(lái)存儲(chǔ)應(yīng)用程序安全上下文詳細(xì)信息截珍。
其中最重要的方法就是initialize()识补,默認(rèn)使用的存儲(chǔ)策略是MODE_THREADLOCAL矿瘦,當(dāng)然也可指定其他方式仓犬。見(jiàn)源碼:

private static void initialize() {
        if (!StringUtils.hasText(strategyName)) {
            strategyName = "MODE_THREADLOCAL";
        }

        if (strategyName.equals("MODE_THREADLOCAL")) {
            strategy = new ThreadLocalSecurityContextHolderStrategy();
        } else if (strategyName.equals("MODE_INHERITABLETHREADLOCAL")) {
            strategy = new InheritableThreadLocalSecurityContextHolderStrategy();
        } else if (strategyName.equals("MODE_GLOBAL")) {
            strategy = new GlobalSecurityContextHolderStrategy();
        } else {
            try {
                Class<?> clazz = Class.forName(strategyName);
                Constructor<?> customStrategy = clazz.getConstructor();
                strategy = (SecurityContextHolderStrategy)customStrategy.newInstance();
            } catch (Exception var2) {
                ReflectionUtils.handleReflectionException(var2);
            }
        }

        ++initializeCount;
    }

如何修改其存儲(chǔ)策略呢锰镀,從源碼一窺究竟:

private static String strategyName = System.getProperty("spring.security.strategy");
public static void setStrategyName(String strategyName) {
        strategyName = strategyName;
        initialize();
    }

至于可修改的存儲(chǔ)策略有哪些呢兄纺?從第一段源碼中可知废菱,支持系統(tǒng)已有的(MODE_THREADLOCAL技矮、MODE_INHERITABLETHREADLOCAL、MODE_GLOBAL)和自定義兩種方式殊轴。大多數(shù)應(yīng)用使用默認(rèn)的存儲(chǔ)策略衰倦。如何修改其存儲(chǔ)策略呢?從第一段源碼可看出有兩種方式:①直接指定spring.security.strategy屬性旁理;②就是調(diào)用setStrategyName()樊零。

如何獲取當(dāng)前用戶(hù)的信息:
SecurityContextHolder用Authentication來(lái)存儲(chǔ)詳細(xì)的主體信息∧跷模可通過(guò)以下代碼在任何地方獲取通過(guò)驗(yàn)證的用戶(hù)名稱(chēng):

Object principal = SecurityContextHolder.getContext()驻襟。getAuthentication()。getPrincipal();

if(principal instanceof UserDetails){
String username =((UserDetails)principal).getUsername();
} else {
String username = principal.toString();
}

SecurityContextHolderStrategy:
簡(jiǎn)述:針對(duì)線(xiàn)程芋哭,存儲(chǔ)安全上下文信息的策略
SecurityContext:
簡(jiǎn)述:安全上下文沉衣,與當(dāng)前線(xiàn)程關(guān)聯(lián)的最小安全消息。
Authentication:
簡(jiǎn)述:表示一次認(rèn)證請(qǐng)求的token减牺,或者一個(gè)經(jīng)過(guò)認(rèn)證的主體(principal)豌习。
如何認(rèn)證?交由AuthenticationManager的authenticate()處理烹植。
一旦經(jīng)過(guò)認(rèn)證斑鸦,Authentication會(huì)存儲(chǔ)在一個(gè)thread-local的SecurityContext中。
屬性authenticated:除非將此屬性設(shè)為true草雕,否則它在遇到任何安全攔截器仍將需要經(jīng)過(guò)認(rèn)證

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市固以,隨后出現(xiàn)的幾起案子墩虹,更是在濱河造成了極大的恐慌嘱巾,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诫钓,死亡現(xiàn)場(chǎng)離奇詭異旬昭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)菌湃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)问拘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惧所,你說(shuō)我怎么就攤上這事骤坐。” “怎么了下愈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵纽绍,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我势似,道長(zhǎng)拌夏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任履因,我火速辦了婚禮障簿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘栅迄。我一直安慰自己卷谈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布霞篡。 她就那樣靜靜地躺著世蔗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朗兵。 梳的紋絲不亂的頭發(fā)上污淋,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音余掖,去河邊找鬼寸爆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盐欺,可吹牛的內(nèi)容都是我干的赁豆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼冗美,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼魔种!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起粉洼,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤节预,失蹤者是張志新(化名)和其女友劉穎叶摄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體安拟,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛤吓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糠赦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片会傲。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拙泽,靈堂內(nèi)的尸體忽然破棺而出淌山,到底是詐尸還是另有隱情,我是刑警寧澤奔滑,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布艾岂,位于F島的核電站,受9級(jí)特大地震影響朋其,放射性物質(zhì)發(fā)生泄漏王浴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一梅猿、第九天 我趴在偏房一處隱蔽的房頂上張望氓辣。 院中可真熱鬧,春花似錦袱蚓、人聲如沸钞啸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)体斩。三九已至,卻和暖如春颖低,著一層夾襖步出監(jiān)牢的瞬間絮吵,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工忱屑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹬敲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓莺戒,卻偏偏與公主長(zhǎng)得像伴嗡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子从铲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一直想入手Framework瘪校,今天終于踏上前進(jìn)的步伐,從編譯環(huán)境開(kāi)始食店,記錄點(diǎn)滴渣淤,致多年后的自己赏寇。源碼的下載這里就暫...
    deriklpw閱讀 1,664評(píng)論 0 1
  • 什么是微信小程序的自定義組件以及意義 自定義組件吉嫩,類(lèi)似于Vue中的組件概念(事件通信機(jī)制非常類(lèi)似)价认,將頁(yè)面內(nèi)的一些...
    Gopal閱讀 687評(píng)論 0 0
  • 現(xiàn)今,對(duì)于存儲(chǔ)的方式有很多種自娩,網(wǎng)絡(luò)附加存儲(chǔ)(NAS)設(shè)備是當(dāng)今存儲(chǔ)硬件中成本最低且最易于管理的設(shè)備之一用踩。NAS存儲(chǔ)...
    Sheeta_zhong閱讀 198評(píng)論 0 0
  • 文/玟瑾 秘密7:套餐要比單品更賺錢(qián) 這類(lèi)小吃店在推出菜品時(shí)往往會(huì)在顯著的地方標(biāo)注套餐的價(jià)格,看上去套餐的價(jià)格要比...
    我是玟瑾閱讀 250評(píng)論 0 0
  • Notification簡(jiǎn)介 通知是在常規(guī)UI界面之外向用戶(hù)展示消息的工具忙迁,當(dāng)系統(tǒng)發(fā)出通知時(shí)脐彩,它會(huì)以圖表的形式顯示...
    Cris_Ma閱讀 6,904評(píng)論 2 10