Object obj = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if( obj instanceof UserDetails){
聽String username=((UserDetails)obj).getUsername();
}else{
聽String username=obj.toString();
}
聽聽聽 涓婇潰榪欐浠g爜浠嬬粛浜嗕笉灝戞湁鎰忔濈殑瀵硅薄鍜屽叧緋匯傞鍏堬紝澶у浼氬彂鐜板湪SecurityContextHolder鍜孉uthentication涔嬮棿瀛樺湪鐫涓涓嵆鏃跺璞★細SecurityContext錛孲ecurityContextHolder.GetContext()榪斿洖鐨勭被鍨嬪氨鏄疭ecurityContext銆侫cegi鏈夋暟涓猄ecurtiyContext鐨勫疄鐜般?br />
聽聽聽 鍙︿竴涓煎緱娉ㄦ剰鐨勬槸鎴戜滑浠嶢uthentication涓幏寰椾簡涓涓鍒欍傝繖涓鍒欑殑綾誨瀷鏄細Object銆傚ぇ澶氭暟鎯呭喌涓嬶紝鎴戜滑鍙互鎶婂畠寮哄埗鎬ц漿鎹㈡垚UserDetails瀵硅薄銆俇serDetails鏄疉cegi鐨勬牳蹇冩帴鍙c傚畠浠h〃浜嗕竴縐嶈鍒欙紝浣嗘槸緇忚繃浜嗗簲鐢ㄧ浉鍏崇殑鎵╁睍銆傚彲浠ユ妸UserDetails鎯寵薄鎴愪負搴旂敤鏁版嵁搴撲笌Acegi鐨凷ecurityContextHolder闇瑕佺殑涓よ呬箣闂寸殑閫傞厤鍣紙Adapter錛夈傚鏋滀綔涓哄簲鐢ㄨ嚜宸辯殑鏁版嵁搴撶殑浠h〃錛岄偅涔堝彲浠ユ妸UserDetails寮哄埗鎬ц漿鎹負鍏跺師濮嬬被錛岃繖鏍鳳紝浣犲氨鍙互璋冪敤鍏朵腑鐨勪笟鍔℃柟娉曪紙姣斿錛歡etEmail()絳夌瓑錛夈?br />
聽聽聽 閭d箞錛屼負浠涔堣鎻愪緵涓涓猆serDetails瀵硅薄鍛紵鏄繖鏍風殑錛氭湁涓涓壒孌婄殑鎺ュ彛錛歎serDetailsService錛岃繖涓帴鍙e彧鏈変竴涓柟娉曪紝榪欎釜鏂規硶鎺ユ敹涓涓猄tring綾誨瀷鐨勮〃紺虹敤鎴峰悕鐨勫弬鏁幫紝榪斿洖UserDetails瀵硅薄銆傚ぇ澶氭暟璁よ瘉鎻愪緵provider瑁呴厤涓涓唬鐞嗗埌UserDetailsService涓娿俇serDetailsService琚敤浜庡垱寤篠ecurityContextHolder涓瓨鍌ㄧ殑Authentication瀵硅薄銆侫cegi涓彁渚涗簡鑻ュ共涓猆serDetailsService鐨勫疄鐜幫紝涓涓嬌鐢ㄥ唴瀛楳ap錛屼竴涓敤JDBC銆傚ぇ澶氭暟鐢ㄦ埛鍊懼悜浜庡啓涓涓嚜宸辯殑瀹炵幇錛岄氬父鏄嬌鐢―AO銆備笉璁篣serDetailsService榪斿洖鐨勬槸浠涔堬紝閮藉彲浠ラ氳繃SecurityContextHolder鑾峰緱銆?/p>
聽聽聽 Authentication鎻愪緵鍙︿竴涓噸瑕佺殑鏂規硶鏄痝etAuthorites()銆傝繖涓柟娉曡繑鍥炰竴涓狦rantedAuthority瀵硅薄鐨勬暟緇勩侴rantedAuthority鏄巿鏉冪粰鐨勮璇併傝繖涓璇侀氬父鎸囩殑鏄滆鑹測濓紝姣斿錛歊OLE_ADMINISTRATOR鎴栬匯OLE_HR_SUPERVISOR銆傝繖浜涜鑹查渶閰嶇疆鐢ㄤ簬web璁よ瘉錛屾柟娉曡璇佸拰鍩熷璞¤璇併傚鏋淎cegi鐨勫叾浠栭儴鍒嗗笇鏈涚湅鍒拌繖浜涜璇侊紝閭d箞UserDetailsService榪斿洖GrantedAuthority瀵硅薄鍗沖彲銆?/p>
聽聽聽 鏈鍚庯紝鏈夋椂浣犻渶瑕佸湪HTTP requests涔嬮棿浼犻扴ecurityContext錛屾湁鏃舵瘡嬈¤姹傞兘闇瑕侀噸鏂拌璇併傞偅涔堝彲浠ヤ嬌鐢℉ttpSessionContextIntergrationFilter錛岃繖鏄敤浜庡湪HTTP Request涔嬮棿浼犻扴ecurityContext鐨勪笢涓溿傚氨璞″悕縐版墍琛ㄧず鐨勯偅鏍鳳細HttpSession鐢ㄤ簬瀛樺偍榪欎簺淇℃伅銆備絾鏄綘涓嶉渶瑕佺洿鎺ユ搷浣淗ttpSession銆?/p>