SpingSecurity配置
SpingSecurity
SpringSecurity是一個框架,它關(guān)注于為Java應(yīng)用程序提供身份驗(yàn)證和授權(quán)。與所有Spring項(xiàng)目一樣,Spring安全性的真正威力在于它可以多么容易地擴(kuò)展以滿足定制需求
Spring Security是一個功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架。它是保護(hù)基于Spring的應(yīng)用程序的事實(shí)標(biāo)準(zhǔn)。
Spring Security 是針對Spring項(xiàng)目的安全框架,也是Spring Boot底層安全模塊默認(rèn)的技術(shù)選型,他可以實(shí)現(xiàn)強(qiáng)大的Web安全控制,對于安全控制,我們僅需要引入 spring-boot-starter-security 模塊,進(jìn)行少量的配置,即可實(shí)現(xiàn)強(qiáng)大的安全管理!
記住幾個類:
-
WebSecurityConfigurerAdapter:自定義Security策略
-
AuthenticationManagerBuilder:自定義認(rèn)證策略
-
@EnableWebSecurity:開啟WebSecurity模式
Spring Security的兩個主要目標(biāo)是 “認(rèn)證” 和 “授權(quán)”(訪問控制)。
“認(rèn)證”(Authentication)
身份驗(yàn)證是關(guān)于驗(yàn)證您的憑據(jù),如用戶名/用戶ID和密碼,以驗(yàn)證您的身份。
身份驗(yàn)證通常通過用戶名和密碼完成,有時與身份驗(yàn)證因素結(jié)合使用。
“授權(quán)” (Authorization)
授權(quán)發(fā)生在系統(tǒng)成功驗(yàn)證您的身份后,最終會授予您訪問資源(如信息,文件,數(shù)據(jù)庫,資金,位置,幾乎任何內(nèi)容)的完全權(quán)限。
認(rèn)證和授權(quán)
常見的http碼
405:請求方式不一致,post,get,濫用415:不支持媒體類型,類型不匹配403:權(quán)限不允許500:后臺代碼錯誤404:請求路徑不存在400:請求發(fā)送的參數(shù)是非法的,不正確的Spring Security是針對Spring項(xiàng)目的安全框架,也是Spring Boot底層安全模塊默認(rèn)的技術(shù)選型,他可以實(shí)現(xiàn)強(qiáng)大的Web安全控制,對于安全控制,我們僅需要引入spring-boot-starter-security模塊,進(jìn)行少量的配置,即可實(shí)現(xiàn)強(qiáng)大的安全管理
SecurityConfig.java
package com.chen.config;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;@EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {//授權(quán)@Overrideprotected void configure(HttpSecurity http) throws Exception {//首頁所有人可以訪問,功能頁只有對應(yīng)有全向的人才能訪問//鏈?zhǔn)骄幊?http認(rèn)證請求 添加一個地址 選擇所有人//請求授權(quán)的規(guī)則 //只有vip*下的才可以訪問http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/level1/**").hasRole("vip1").antMatchers("/level2/**").hasRole("vip2").antMatchers("/level3/**").hasRole("vip3");//沒有權(quán)限默認(rèn)會跳到登錄頁面 定制跳轉(zhuǎn)頁面 自定義參數(shù)http.formLogin().loginPage("/toLogin").usernameParameter("user").passwordParameter("pwd").loginProcessingUrl("/login");//開啟注銷功能 跳轉(zhuǎn)到首頁 參數(shù)介紹 移除所有的cookie 清空所有的session(會話)// http.logout().deleteCookies("remove").invalidateHttpSession(true);//默認(rèn)注銷去指定頁面http.logout().logoutSuccessUrl("/");//關(guān)閉跨站腳本請求攻擊的功能http.csrf().disable();//開啟記住我功能 自定義接受前端參數(shù) cookie默認(rèn)保存2周http.rememberMe().rememberMeParameter("remember");}//認(rèn)證//密碼未加密 反編譯為class文件@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {//內(nèi)存中認(rèn)證auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("chenchao").password(new BCryptPasswordEncoder().encode("123456")).roles("vip2","vip3").and().withUser("admin").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2","vip3").and().withUser("guest").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1");} }需要導(dǎo)入的包
pom.xml
總結(jié)
以上是生活随笔為你收集整理的SpingSecurity配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html怎么导入素材,Resolume
- 下一篇: 典型数据库架构设计