SpringSecurity使用

工作流程:

????當用戶向服務器發(fā)送請求時,SpringSecurity會通過過濾器,攔截SpringSecurity配置文件中設置的請求,如果設置了認證頁面則跳向自定義的認證頁面,否則跳向SpringSecurity提供的認證頁面亲族,當提交用戶名或密碼后SpringSecurity會調用設置的業(yè)務層代碼,獲取到指定的對象,然后SpringSecurity框架會自動對登錄的用戶進行密碼或權限的檢查,如果驗證通過則跳向指定的驗證成功后的頁面,否則跳向指定的驗證失敗后的頁面窖式;

SpringSecurity相關配置:

? ? 1)克握、導入SpringSecurity所依賴的jar包;

? ? ? ? ? ? 1)囚霸、spring-security-web;

? ? ? ? ? ? 2)读规、spring-security-config;

? ? 2)宜咒、配置wen.xml文件幌绍;

????????????SpringSecurity底層是通過11個過濾器組成的過濾器鏈來工作的,所以使用SpringSecurity之前需要在web.xml配置文件中添加SpringSecurity提供的過濾器實現(xiàn)類(過濾器鏈的入口):

<filter>

? ? <filter-name>springSecurityFilterChain</filter-name>

? ? <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

<filter-mapping>

? ? <filter-name>springSecurityFilterChain</filter-name>

? ? <url-pattern>/*</url-pattern>

</filter-mapping>

<!--通過spring提供的監(jiān)聽器來解析SpringSecurity核心配置文件-->

<context-param>

????<param-name>contextConfigLocation</param-name>

????<param-value>classpath:spring/spring-security.xml</param-value>

</context-param>

3)修械、配置SpringSecurity核心配置文件:

? ? ? ?a)和泌、導入配置文件的依賴;

????????<beans xmlns="http://www.springframework.org/schema/beans"

? ? ? ???????????????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? ? ????????????????? xmlns:context="http://www.springframework.org/schema/context"

? ? ????????????????? xmlns:aop="http://www.springframework.org/schema/aop"

? ????????????????? ? xmlns:tx="http://www.springframework.org/schema/tx"

? ? ? ???????????????? xmlns:mvc="http://www.springframework.org/schema/mvc"

? ? ????????????????? xmlns:security="http://www.springframework.org/schema/security"

? ? ????????????????? xsi:schemaLocation="http://www.springframework.org/schema/beans

? ? ? ? ? ? ? ? ? ? ?http://www.springframework.org/schema/beans/spring-beans.xsd

? ? ? ? ? ????? ???? http://www.springframework.org/schema/context

? ? ? ? ? ????????? http://www.springframework.org/schema/context/spring-context.xsd

? ? ? ? ? ? ???????? http://www.springframework.org/schema/aop

? ? ? ? ? ????????? http://www.springframework.org/schema/aop/spring-aop.xsd

? ? ? ? ????????? ? http://www.springframework.org/schema/tx

? ? ? ????????? ? ? http://www.springframework.org/schema/tx/spring-tx.xsd

? ? ? ? ? ? ? ? ? ? http://www.springframework.org/schema/mvc

? ? ? ????????? ? ? http://www.springframework.org/schema/mvc/spring-mvc.xsd

? ? ? ? ? ????????? http://www.springframework.org/schema/security

? ? ? ? ????????? ? http://www.springframework.org/schema/security/spring-security.xsd">

</beans>

????b)祠肥、釋放對靜態(tài)資源攔截或指定文件的攔截

<security:http pattern="/login.jsp" security="none"/>

<security:http pattern="/failer.jsp" security="none"/>

<security:http pattern="/css/**" security="none"/>

<security:http pattern="/img/**" security="none"/>

<security:http pattern="/plugins/**" security="none"/>

SpringSecurity主配置

<security:http auto-config="true" use-expressions="true">

? ? <!--設置所攔截的路徑武氓、對指定權限的用戶放行-->

? ? <security:intercept-url pattern="/**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER')"/>

? ? <!--登錄相關配置-->

? ? <security:form-login login-page="/login.jsp"

? ? ? ? ? ? ? ? ? ? ? ? login-processing-url="/login"<!--登錄后框架所調用的業(yè)務處理層(服務層)-->

? ? ? ? ? ? ? ? ? ? ? ? default-target-url="/index.jsp"<!--登錄成功后跳轉的頁面-->

? ? ? ? ? ? ? ? ? ? ? ? authentication-failure-url="/failer.jsp"<!--登錄失敗后跳轉的頁面-->

? ??????????????????????always-use-default-target="true"<!--登錄成功后總是跳轉到default-target-url所指定的頁面-->

/>

? ? <!--退出相關配置-->

? ? <security:logout invalidate-session="true"

? ? ? ? ? ? ? ? ? ? logout-url="/logout"<!--注銷后框架所調用的業(yè)務處理層(服務層)-->

? ? ? ? ? ? ? ? ? ? logout-success-url="/login.jsp"/>

? ? <!--關閉csrf攔截-->

? ? <security:csrf disabled="true"/>

</security:http>

? ?c)梯皿、為SpringSecurity提供數(shù)據(jù)認證來源

<bean id="passwordEncode" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"></bean>

<security:authentication-manager>

? <!--設置SpringSecurity業(yè)務處理的實現(xiàn)類對象-->

? ? <security:authentication-provider user-service-ref="userServiceImpl">

? <!--設置SpringSecurity用于加密以及用于比較原文與密文是否相同的對象實例-->?

? ? ? ? <security:password-encoder ref="passwordEncode"/>

? ? </security:authentication-provider>

</security:authentication-manager>

SpringSecurity業(yè)務層編寫步驟:

? ? 1)、實現(xiàn)UserDetailsService接口;

? ? 2)县恕、重寫loadUserByUsername方法;

? ? ? ? ? ?a)东羹、 通過傳入的username查詢數(shù)據(jù)庫獲取用戶對象;

? ? ? ? ? ?b)、驗證用戶是否存在;

? ? ? ? ? ?c)忠烛、將查詢到的用戶信息封裝到UserDetails實例中;

???????????????????該對象實例的構造方法需要傳入username属提、password、該用戶所擁有的角色名集合;

????????????????????????用戶的角色名稱需要封裝到SimpleGrantedAuthority實例中美尸;

????????????????????????然后將所有的SimpleGrantedAuthority實例封裝帶集合中,傳入UserDetails實例冤议;

? ? ? 3)、返回UserDetails對象;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末师坎,一起剝皮案震驚了整個濱河市恕酸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胯陋,老刑警劉巖蕊温,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遏乔,居然都是意外死亡义矛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門盟萨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凉翻,“玉大人,你說我怎么就攤上這事捻激≡朊” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵铺罢,是天一觀的道長艇挨。 經常有香客問我,道長韭赘,這世上最難降的妖魔是什么缩滨? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮泉瞻,結果婚禮上脉漏,老公的妹妹穿的比我還像新娘。我一直安慰自己袖牙,他們只是感情好侧巨,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞭达,像睡著了一般司忱。 火紅的嫁衣襯著肌膚如雪皇忿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天坦仍,我揣著相機與錄音鳍烁,去河邊找鬼。 笑死繁扎,一個胖子當著我的面吹牛幔荒,可吹牛的內容都是我干的。 我是一名探鬼主播梳玫,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爹梁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了提澎?” 一聲冷哼從身側響起姚垃,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎虱朵,沒想到半個月后莉炉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钓账,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡碴犬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梆暮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片服协。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啦粹,靈堂內的尸體忽然破棺而出偿荷,到底是詐尸還是另有隱情,我是刑警寧澤唠椭,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布跳纳,位于F島的核電站,受9級特大地震影響贪嫂,放射性物質發(fā)生泄漏寺庄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一力崇、第九天 我趴在偏房一處隱蔽的房頂上張望斗塘。 院中可真熱鬧,春花似錦轴捎、人聲如沸狠毯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贞岭。三九已至八毯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曹步,已是汗流浹背宪彩。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留讲婚,地道東北人尿孔。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像筹麸,于是被迫代替她去往敵國和親活合。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容