Spring Boot 允许具有管理员角色的用户使用所有API

3phpmpom  于 2022-11-23  发布在  Spring
关注(0)|答案(1)|浏览(157)

我使用spring security配置了我的API安全端:

http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                    .and()
                    .authorizeRequests(authRequests -> {
                        // Allow all resource to admin
                        authRequests.antMatchers("*").hasRole(RoleType.Fields.ADMIN);
                        // Permissions OPTIONS
                        authRequests.mvcMatchers(HttpMethod.OPTIONS).permitAll();
                        // Management endpoints
                        authRequests.mvcMatchers("/management/**", "/docs/**", "/webjars/**").permitAll();
                        // Business APIs
                        authRequests.anyRequest().authenticated();
                    });
            http.oauth2ResourceServer().jwt().jwtAuthenticationConverter(jwtAuthenticationConverter());

对于其他角色,我创建了一个过滤器来获得权限,它工作正常,问题是我想给予ROLE_ADMIN访问所有资源的权限,当我使用antMatchers("*")时,API给出403代码。

3zwtqj6y

3zwtqj6y1#

尝试禁用csrf保护:

http.csrf().disable();

并使用anyRequest()代替antMatchers("*")

authRequests.anyRequest().hasRole(RoleType.Fields.ADMIN)

相关问题