gpt4 book ai didi

java - 使用 Spring Security 基于 Angular 色的授权

转载 作者:行者123 更新时间:2023-12-02 08:55:22 25 4
gpt4 key购买 nike

我正在使用带有 jwt 的 Spring Security 的 Spring Boot 应用程序。

登录用户具有管理员权限,他正在尝试删除该用户,它接受以下代码

Angular :-

    delete(userId: number) {
debugger;
return this.http.delete(`/api/v1/admin/deleteUser/${userId}`);
}

SpringSecurityConfig.java

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.headers()
.frameOptions().sameOrigin()
.and()
.authorizeRequests()
.antMatchers("/api/v1/authenticate", "/api/v1/register","/api/v1/basicauth").permitAll()
.antMatchers("/").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")//only admin can access this
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/home")
.failureUrl("/login?error")
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout")
.deleteCookies("my-remember-me-cookie")
.permitAll()
.and()
.exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);

// Add a filter to validate the tokens with every request
http.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}

controller.java

@DeleteMapping(path = "/admin/deleteUser/{userId}")
public ResponseEntity<?> deleteUser(HttpServletRequest request,@PathVariable int userId) {

authenticationService.deleteUser(userId);

return ResponseEntity.ok((""));
}

但在我的应用程序用户使用 ROLE_USER 登录时,他也可以访问该方法,如何将访问权限限制为仅限 ROLE_ADMIN

最佳答案

修改 ant 匹配器以匹配预期的 URL。

.antMatchers("/api/v1/admin/**").hasRole("ADMIN")//只有管理员可以访问

关于java - 使用 Spring Security 基于 Angular 色的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60524912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com