今天小編給大家分享一下怎么用Spring Boot快速搭建一個項目的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
在成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。創(chuàng)新互聯(lián)建站專業(yè)成都網(wǎng)站建設(shè)十年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。
Spring Security是為基于Spring的應(yīng)用程序提供聲明式安全保護的安全性框架。Spring Security提供了完整的安全性解決方案,它能夠在Web請求級別和方法調(diào)用級別處理身份認證和授權(quán)。因為基于Spring框架,所以Spring Security充分利用了依賴注入(dependency injection,DI)和面向切面的技術(shù)。Spring Security借助一系列Servlet Filter來提供各種安全性功能。你可能會想,這是否意味著我們需要在web.xml或WebApplicationInitializer中配置多個Filter呢?實際上,借助于Spring的小技巧,我們只需配置一個Filter就可以了。
DelegatingFilterProxy是一個特殊的Servlet Filter,它本身所做的工作并不多。只是將工作委托給一個javax.servlet.Filter實
現(xiàn)類,這個實現(xiàn)類作為一個注冊在Spring應(yīng)用的上下文中。如果你希望借助WebApplicationInitializer以Java的方式來配置Delegating-FilterProxy的話,那么我們所需要做的就是創(chuàng)建一個擴展的新類AbstractSecurityWebApplicationInitializer實現(xiàn)了WebApplication-Initializer,因此Spring會發(fā)現(xiàn)它,并用它在Web容器中注冊DelegatingFilterProxy。盡管我們可以重載它的appendFilters()或insertFilters()方法來注冊自己選擇的Filter,但是要注冊DelegatingFilterProxy的話,我們并不需要重載任何方法。
接下來我用Spring Boot 快速搭建一個項目進行演示。只需要新建一個Controller即可:
/** * @author itguang * @create @RestController public class HelloController @RequestMapping("hello") public String hello() { return "hello Spring Security"; } }
然后我們啟動項目,訪問 http://localhost/hello (注意這里我把啟動端口修改為了80,文章最后會有源碼地址,可供參考)
然后就會看到我們返回的 hello Spring Security 字符串。
下面我們添加Spring Security的依賴
org.springframework.boot spring-boot-starter-security
開始進行安全相關(guān)的配置。
/** * @author itguang * @create public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer
/** * @author itguang * @create @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter{
接下來訪問 : http://localhost/hello,頁面會自動跳轉(zhuǎn)到 http://localhost/login 讓我們登陸.
奇怪我們并沒有配置登陸頁,怎么會讓我們登陸呢?其實這就是 Spring Security 為我們做的安全驗證,如下圖:
用戶名默認是user,密碼我們需要在項目的啟動日志中去查看,找到這一行 Using default security password: 236f5782-6076-414e-b182-78ce138a8cc9
,
把密碼填上去,注意每次啟動的密碼都不一樣,是隨機的。然后我們點擊login,頁面就跳轉(zhuǎn)到了 http://localhost/hello 頁面,并且顯示出我們在controller里面返回的 hello Spring Security
上面兩步我們就完成了最簡單的Spring Security 相關(guān)配置,但是很可惜,這并不是我們想要的結(jié)果。
我們想要指定web安全相關(guān)的細節(jié)。這需要我們通過重載 WebSecurityConfigurerAdapter 中的一個或多個方法來實現(xiàn)。
我們就可以通過重載 WebSecurityConfigureAdapter 的三個 configure() 方法,來配置web安全性的細節(jié)。這個過程會使用傳遞進來的餓參數(shù)設(shè)置行為。
configure(WebSecurity) 通過重載,配置Spring Security的Filter鏈。
configure(HttpSecurity) 通過重載,配置如何通過攔截器保護請求。
configure(AuthenticationManagerBuiler) 通過重在配置user-detail 服務(wù)。
我們在回過頭看看之前寫的 SecurityConfig 類,并沒有重寫任何一個方法,這也就解釋了為什么應(yīng)用現(xiàn)在是被鎖定的。我們可以查看 WebSecurityConfigurerAdapter 的源碼:
protected void configure(HttpSecurity http) throws Exception { logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity)."); http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin().and() .httpBasic(); }
這個簡單的默認配置指定了該如何保護HTTP請求,以及客戶端認證
用戶的方案。通過調(diào)用authorizeRequests()和
anyRequest().authenticated()就會要求所有進入應(yīng)用的
HTTP請求都要進行認證。它也配置Spring Security支持基于表單的登
錄以及HTTP Basic方式的認證。
我們把光標放在 formLogin 和 httpBasic 上,可以看到這兩個注釋如下:
//The configuration below demonstrates customizing the defaults. @Configuration @EnableWebSecurity public class FormLoginSecurityConfig extends WebSecurityConfigurerAdapter @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/**").hasRole("USER").and().formLogin() .usernameParameter("username") // default is username .passwordParameter("password") // default is password .loginPage("/authentication/login") // default is /login with an HTTP get .failureUrl("/authentication/login?failed") // default is /login?error .loginProcessingUrl("/authentication/login/process"); // default is /login // with an HTTP // post } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); } }
可以看到,默認配置了沒有授權(quán)時的登陸頁面和鞥失敗時的錯誤頁面,這也告訴我們,如果想自定義登錄頁可以重載這個方法。
@Configuration @EnableWebSecurity public class HttpBasicSecurityConfig extends WebSecurityConfigurerAdapter @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/**").hasRole("USER").and().httpBasic(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); } }
上面這個注釋的示例演示了如何為應(yīng)用程序配置HTTP基本身份驗證。默認的域是“Spring Security Application”,但是可以使用它進行自定義
因此:為了讓讓 Spring Security 滿足我們自己的應(yīng)用需求,還需要添加一點配置,具體來講我們需要:
1 配置用戶存儲
2 指定哪些請求需要認證,哪些請求不需要認證,以及所需要的權(quán)限。
3 提供一個自定義的登陸頁面,代替原來簡單的登錄頁面
以上就是“怎么用Spring Boot快速搭建一個項目”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。