溫馨提示×

springboot接口權(quán)限校驗的方法是什么

小億
165
2023-08-14 10:37:11
欄目: 編程語言

Spring Boot中可以使用Spring Security來進(jìn)行接口權(quán)限校驗。以下是一種常見的方法來實現(xiàn)接口權(quán)限校驗:

  1. 添加依賴:在pom.xml文件中添加Spring Security的依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
  1. 創(chuàng)建用戶和角色實體類:創(chuàng)建用戶和角色的實體類,并使用注解標(biāo)記實體類和字段與數(shù)據(jù)庫表和列的關(guān)系。

  2. 創(chuàng)建用戶和角色的Repository:創(chuàng)建用戶和角色的Repository接口,用于與數(shù)據(jù)庫交互。

  3. 創(chuàng)建UserService:創(chuàng)建UserService類,實現(xiàn)UserDetailsService接口,并重寫loadUserByUsername方法,用于根據(jù)用戶名加載用戶信息。

  4. 創(chuàng)建SecurityConfig:創(chuàng)建SecurityConfig類,繼承WebSecurityConfigurerAdapter類,并重寫configure方法,用于配置Spring Security的相關(guān)信息。

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/public/**").permitAll() // 公開接口,無需認(rèn)證
.anyRequest().authenticated() // 其他接口需要進(jìn)行認(rèn)證
.and()
.formLogin() // 使用表單登錄
.loginPage("/login") // 登錄頁的URL
.loginProcessingUrl("/doLogin") // 登錄表單的POST URL
.permitAll()
.and()
.logout()
.logoutUrl("/logout") // 登出URL
.logoutSuccessUrl("/login") // 登出成功后跳轉(zhuǎn)的URL
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
  1. 創(chuàng)建Controller:創(chuàng)建Controller類,并使用@PreAuthorize注解來標(biāo)記需要進(jìn)行權(quán)限校驗的接口。
@RestController
@RequestMapping("/api")
public class MyController {
@PreAuthorize("hasRole('ROLE_ADMIN')")
@GetMapping("/admin")
public String admin() {
return "Admin Page";
}
@PreAuthorize("hasAnyRole('ROLE_ADMIN', 'ROLE_USER')")
@GetMapping("/user")
public String user() {
return "User Page";
}
@GetMapping("/public")
public String publicPage() {
return "Public Page";
}
}

以上就是一種基于Spring Boot和Spring Security進(jìn)行接口權(quán)限校驗的方法。在這種方法中,我們使用@PreAuthorize注解來標(biāo)記接口,通過指定角色來進(jìn)行權(quán)限校驗。當(dāng)訪問帶有@PreAuthorize注解的接口時,Spring Security會自動進(jìn)行權(quán)限校驗,如果用戶沒有相應(yīng)的角色,將會返回403 Forbidden錯誤。

0