中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

springboot接口權限校驗的方法是什么

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

Spring Boot中可以使用Spring Security來進行接口權限校驗。以下是一種常見的方法來實現接口權限校驗:

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

  2. 創建用戶和角色的Repository:創建用戶和角色的Repository接口,用于與數據庫交互。

  3. 創建UserService:創建UserService類,實現UserDetailsService接口,并重寫loadUserByUsername方法,用于根據用戶名加載用戶信息。

  4. 創建SecurityConfig:創建SecurityConfig類,繼承WebSecurityConfigurerAdapter類,并重寫configure方法,用于配置Spring Security的相關信息。

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/public/**").permitAll() // 公開接口,無需認證
.anyRequest().authenticated() // 其他接口需要進行認證
.and()
.formLogin() // 使用表單登錄
.loginPage("/login") // 登錄頁的URL
.loginProcessingUrl("/doLogin") // 登錄表單的POST URL
.permitAll()
.and()
.logout()
.logoutUrl("/logout") // 登出URL
.logoutSuccessUrl("/login") // 登出成功后跳轉的URL
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
  1. 創建Controller:創建Controller類,并使用@PreAuthorize注解來標記需要進行權限校驗的接口。
@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進行接口權限校驗的方法。在這種方法中,我們使用@PreAuthorize注解來標記接口,通過指定角色來進行權限校驗。當訪問帶有@PreAuthorize注解的接口時,Spring Security會自動進行權限校驗,如果用戶沒有相應的角色,將會返回403 Forbidden錯誤。

0
会宁县| 保德县| 克拉玛依市| 邓州市| 耿马| 赞皇县| 于都县| 临湘市| 罗江县| 邓州市| 阿鲁科尔沁旗| 永兴县| 耒阳市| 扶余县| 杨浦区| 辛集市| 康定县| 赤壁市| 紫云| 南岸区| 北宁市| 永川市| 开原市| 南阳市| 精河县| 辽中县| 阳新县| 尼玛县| 和田市| 宁安市| 通化县| 丰台区| 行唐县| 汉中市| 尉犁县| 丽江市| 江陵县| 石家庄市| 南和县| 呼图壁县| 楚雄市|