成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎樣進(jìn)行添加Spring-Security支持

怎樣進(jìn)行添加Spring-Security支持,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)公司,專注為中小企業(yè)提供官網(wǎng)建設(shè)、營銷型網(wǎng)站制作、響應(yīng)式網(wǎng)站設(shè)計(jì)、展示型網(wǎng)站設(shè)計(jì)、網(wǎng)站制作等服務(wù),幫助中小企業(yè)通過網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營銷推廣問題。

添加maven依賴:

怎樣進(jìn)行添加Spring-Security支持

添加配置

新建包config:SecurityConfig繼承于WebSecurityConfigurerAdapter.

怎樣進(jìn)行添加Spring-Security支持

configure(HttpSecurity http)方法:在該方法內(nèi)配置web路徑和對應(yīng)的權(quán)限

    http.authorizeRequests().antMatchers(...):配置web路徑

    permitAll(),.hasRole(),.hasAnyRole:配置web路徑對應(yīng)的權(quán)限.

    例如: .antMatchers("/manage/**").hasRole("ADMIN")

    表示路徑/manage下的所有地址和資源,需要具有ROLE_ADMIN角色的用戶才能訪問.

    .formLogin().loginPage("/login")   // 指定了登錄頁面

    .successForwardUrl("/sign_in").failureUrl("/sign_in")

   指定spring-security認(rèn)證完成(成功/失敗)后回調(diào)的路徑(GET),該路徑通常是我們自己的controller方法,方法里可以定義登錄反饋,具體見項(xiàng)目代碼.

    .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/").permitAll(): 定義注銷的路徑,并且所有用戶都可訪問該方法.

configure(AuthenticationManagerBuilder auth):在該方法內(nèi)配置自定義的安全認(rèn)證類

    auth.authenticationProvider(securityEncrypt):自定義認(rèn)證

    auth.userDetailsService(customUserService):自定義認(rèn)證用戶信息服務(wù)

至此,路徑已經(jīng)具備安全特性了.下面介紹登錄認(rèn)證和用戶角色資源管理

登錄認(rèn)證流程

    SecurityConfig.configure:查找用戶認(rèn)證提供者->SecurityEncrypt

    SecurityEncrypt.authenticate:認(rèn)證用戶憑證

        CustomUserService.loadUserByUsername:加載用戶數(shù)據(jù)庫用戶信息

        密碼匹配:

            失敗:拋出認(rèn)證異常

            成功:返回認(rèn)證用戶信息

實(shí)際項(xiàng)目中的密碼是經(jīng)過加密的,所以需要自定義認(rèn)證方案,本項(xiàng)目使用BCrypt加密方式,具體代碼見EncryptUtil工具類.

創(chuàng)建類: SecurityEncrypt,自定義認(rèn)證

怎樣進(jìn)行添加Spring-Security支持

authenticate(Authentication authentication):該方法將對用戶輸入信息進(jìn)行匹配

    authentication.getName():用戶輸入的用戶名

    authentication.getCredentials():用戶輸入的密碼

    UserDetails user = userService.loadUserByUsername(username):通過用戶名加載數(shù)據(jù)庫用戶信息

    認(rèn)證完成后(成功/失敗)回調(diào) /sign_in.

創(chuàng)建類: CustomUserService,自定義加載數(shù)據(jù)庫用戶信息,同時(shí)加載用戶的角色和角色對資源的訪問權(quán)限信息.

怎樣進(jìn)行添加Spring-Security支持

配置認(rèn)證完成后的操作:

怎樣進(jìn)行添加Spring-Security支持

principal:已認(rèn)證對象,null表示認(rèn)證失敗

SPRING_SECURITY_SAVED_REQUEST: spring-security保存到session中的屬性,保存了認(rèn)證前的頁面.如果該屬性不為null,可以傳遞給頁面讓js跳轉(zhuǎn),即實(shí)現(xiàn)了認(rèn)證后跳轉(zhuǎn)到認(rèn)證前的頁面.

配置某個方法的訪問權(quán)限:

怎樣進(jìn)行添加Spring-Security支持

@PreAuthorize:在方法執(zhí)行前將會檢查用戶是否具有對應(yīng)的權(quán)限,可選值:

怎樣進(jìn)行添加Spring-Security支持

Thymeleaf頁面中配置權(quán)限: hello.html

怎樣進(jìn)行添加Spring-Security支持

xmlns:sec="http://www.thymeleaf.org/extras/spring-security":導(dǎo)入security標(biāo)簽

sec:authorize="hasRole('USER')":顯示該對象需要具有該權(quán)限

github項(xiàng)目中,我定義了兩個用戶角色和兩個資源訪問權(quán)限

角色(Roles):注意: spring-security中用戶角色默認(rèn)前綴是ROLE_,后面配置時(shí)不要加.

怎樣進(jìn)行添加Spring-Security支持

ROLE_USER:表示已登錄用戶,注冊用戶時(shí)自動賦予該角色

ROLE_ADMIN:目前項(xiàng)目中的最高權(quán)利角色

角色權(quán)限(Privilege)

怎樣進(jìn)行添加Spring-Security支持

user:*表示已注冊用戶資源訪問權(quán)限,對應(yīng)ROLE_USER

global:*表示最高權(quán)限,該類型用戶可以訪問所有資源,對應(yīng)ROLE_ADMIN

項(xiàng)目啟動時(shí)會自動初始化相關(guān)權(quán)限.

本項(xiàng)目添加了簡要的后臺管理,用以保存公眾號的文章信息。

看完上述內(nèi)容,你們掌握怎樣進(jìn)行添加Spring-Security支持的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站名稱:怎樣進(jìn)行添加Spring-Security支持
分享路徑:http://jinyejixie.com/article24/ijjhje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、全網(wǎng)營銷推廣、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)公司、App設(shè)計(jì)動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
九台市| 磐石市| 东方市| 綦江县| 建平县| 明光市| 吴川市| 马尔康县| 辉南县| 偃师市| 泸溪县| 姚安县| 伊宁县| 友谊县| 西城区| 友谊县| 昌黎县| 彝良县| 海南省| 洞口县| 岱山县| 色达县| 兴宁市| 北京市| 始兴县| 沧州市| 聊城市| 怀安县| 扬中市| 青川县| 民勤县| 永清县| 兴化市| 屯昌县| 麻栗坡县| 读书| 来宾市| 富宁县| 平泉县| 板桥市| 孟连|