gpt4 book ai didi

java - 找不到 Spring Security/登录

转载 作者:行者123 更新时间:2023-12-02 02:35:02 24 4
gpt4 key购买 nike

我想创建一个简单的 REST API,我使用 Angular 6 和 Spring Boot。我想对我的应用程序实现日志记录,但每当我尝试注册时,都会收到 404 Not Found/login。我查找了发现的现有类似问题,但似乎没有任何帮助。

这是我的 spring 安全配置(我确信我的注册表单和 Controller 工作正常,所以我猜问题出在下面的某个地方)

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {


@Value("${allowedOriginAddress}")
private String allowedOriginAddress;

@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

@Bean
public UserDataDetailsService userDataDetailsService() {
return new UserDataDetailsService();
}

@Bean
public CorsConfigurationSource corsConfigurationSource() {
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(
Arrays.asList(
allowedOriginAddress,
allowedOriginAddress + "/*")
);
configuration.setAllowedMethods(Arrays.asList("GET","POST","DELETE","OPTIONS","PUT"));
configuration.setAllowCredentials(true);
configuration.setAllowedHeaders(Arrays.asList("*"));
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}

@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}


@Override
protected void configure(HttpSecurity http) throws Exception {

http.cors().and()
.authorizeRequests()
.anyRequest().permitAll()
.and().csrf().disable()
.formLogin()
.loginPage("/")
.usernameParameter("email")
.loginProcessingUrl("/login")
.failureForwardUrl("/prev")
.successForwardUrl("/next")
.and().authorizeRequests().anyRequest().permitAll();

}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDataDetailsService()).passwordEncoder(passwordEncoder());

}
}
@SpringBootApplication
@Configuration
public class WhispererApplication implements WebMvcConfigurer {

public static void main(String[] args) {
SpringApplication.run(WhispererApplication.class, args);
}


}

最佳答案

我在您的项目中找不到身份验证配置。请尝试添加以下代码:

.anyRequest().authenticated()

我认为你的代码将是:

@Override
protected void configure(HttpSecurity http) throws Exception {

http
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.cors().and()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/public/**").permitAll()
.antMatchers(HttpMethod.POST, "/login").permitAll()
.anyRequest().authenticated().
.and()
.addFilter(new JWTAuthenticationFilter(authenticationManager()))
.addFilter(new JWTAuthorizationFilter(authenticationManager()));
}

如果您使用 JWT 来对用户进行身份验证,则 JWTAuthenticationFilter 和 JWTAuthorizationFilter 用于管理 JWT。

关于java - 找不到 Spring Security/登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208977/

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