java 当我做http请求我得到错误403虽然我输入正确的密码和登录在 Postman

cbjzeqam  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(110)
@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    protected UserDetailsService userDetailsService(){
        UserDetails admin = User.builder()
                .username("admin")
                .password(passwordEncoder().encode("admin"))
                .authorities(Role.ADMIN.name())
                .build();
        UserDetails user = User.builder()
                .username("user")
                .password(passwordEncoder().encode("user"))
                .authorities(Role.USER.name())
                .build();
        return new InMemoryUserDetailsManager(admin,user);
    }
    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
   @Bean
    public SecurityFilterChain securityFilterChain (HttpSecurity http) throws Exception{
        http.authorizeRequests()
                .requestMatchers(HttpMethod.GET,"/**").hasAnyAuthority(Role.ADMIN.name(),Role.USER.name())
                .requestMatchers(HttpMethod.POST,"/**").hasAuthority(Role.ADMIN.name())
                .anyRequest()
                .authenticated();
        return http.build();

   }

}

个字符
当我做HTTP请求(发布或获取)在 Postman 我得到403错误,虽然我输入正确的登录名和密码,我已经连接 Postman 拦截器,但它无论如何不工作。没有Spring安全后,并获得请求正确工作。我将感谢您的任何帮助

egdjgwm8

egdjgwm81#

正如@M.代努姆所说,你必须配置一个身份验证机制。例如,像这样配置基本身份验证:

http.httpBasic();
return http.build();

字符串
在此配置之后,由于post端点的csrf,您将获得401错误。
使用这个来禁用它:

http.csrf().disable();


请参阅此问题了解更多详情:Getting 401 Unauthorized

相关问题