首頁> Java> java教程> 主體

SpringBoot怎麼快速整合SpringSecurity

WBOY
發布: 2023-05-16 21:56:28
轉載
896 人瀏覽過

一、什麼是SpringSecurity?

Spring Security是一個基於Spring框架的安全性框架,提供了一組輕量級的API和工具,用於實現身份驗證、授權、防止攻擊等常見的安全性功能。它支援各種身份驗證方式,例如基本身份驗證、表單身份驗證、OAuth3.0和OpenID Connect等。開發人員可以根據應用程式的需求進行客製化,因為Spring Security具有大量可配置的選項。 Spring Security已經成為了Java企業級應用程式中使用最廣泛的安全框架之一。

二、SpringSecurity的原理

Spring Security的主要原理是透過過濾器鏈(Filter Chain)來保護應用程式資源。不同的安全功能由過濾器鏈中的不同過濾器負責,例如身份驗證、授權、攻擊防禦等。

當一個請求到達應用程式時,它首先會被最外層的過濾器攔截。此過濾器將請求傳遞給下一個過濾器,並在此之前執行某些前置處理,例如日誌記錄和跨網域請求處理等。每個過濾器在過濾器鏈中依序逐一執行,直到最內層的過濾器處理完請求並回傳回應。

Spring Security透過配置過濾器鏈來保護應用程式資源。每個過濾器都有不同的職責,例如:

(1)AuthenticationFilter:身份驗證過濾器,用於對使用者進行身份驗證。

(2)AuthorizationFilter:授權過濾器,用於檢查使用者是否有權限存取某個資源。

(3)CsrfFilter:防止跨站點請求偽造(CSRF)過濾器,用於防止CSRF攻擊。

(4)ExceptionTranslationFilter是處理安全相關例外狀況的過濾器,負責轉換例外例外。

(5)SessionManagementFilter:會話管理過濾器,用於管理使用者的會話。

開發人員可以基於Spring Security提供的API和工具,自訂自己的安全策略,並將它們加入濾鏡鏈中。應用程式在接收到請求時,將會依照這些安全性策略來保護其資源。

三、SpringBoot整合SpringSecurity

#新增依賴

 org.springframework.boot spring-boot-starter-security 
登入後複製

設定Spring Security

# 设置默认用户 spring.security.user.name=user spring.security.user.password=pass # 关闭CSRF保护 spring.security.csrf.enabled=false
登入後複製

#編寫安全性設定類別。編寫一個安全性配置類別來配置Spring Security。這個類別應該要擴充WebSecurityConfigurerAdapter並覆寫一些方法來設定安全性。

@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { // 配置用户信息 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("user").password("{noop}pass").roles("USER"); } // 配置HTTP请求安全性 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/public/**").permitAll() // 允许/public/**路径下的所有请求 .anyRequest().authenticated() // 所有其他请求都需要身份验证 .and() .formLogin() // 启用表单登录 .loginPage("/login") // 指定登录页面 .defaultSuccessUrl("/", true) // 登录成功后重定向到主页 .permitAll() // 允许所有用户访问登录页面 .and() .logout() // 启用注销 .logoutUrl("/logout") // 注销URL .logoutSuccessUrl("/login") // 注销成功后重定向到登录页面 .permitAll(); // 允许所有用户注销 } }
登入後複製

在上面的設定中,我們配置了一個記憶體驗證(使用使用者名稱和密碼)和HTTP請求安全性(允許某些路徑下的請求,要求所有其他請求都需要身份驗證,並開啟表單登入和登出)。

寫控制器。最後,您需要編寫一個控制器來處理登入和登出請求。

@Controller public class LoginController { // 处理登录请求 @GetMapping("/login") public String login() { return "login"; } // 处理注销请求 @PostMapping("/logout") public String logout() { return "redirect:/login?logout=true"; } }
登入後複製

我們在程式碼中定義了一個名為login()的方法,用於處理登入頁面請求,並將一個名為login的範本傳回。 logout()方法用於處理登出請求,並重定向到登入頁面。

寫入html模板。最後,我們需要寫一個名為login.html的範本來呈現登入頁面。

   Login 

Login

登入後複製

以上是SpringBoot怎麼快速整合SpringSecurity的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!