我得到StackOverflow Error
而调用身份验证Manger.authenticate()
Java语言lang.StackOverflowerr:org处为null。阿帕奇。平民登录中。日志适配器$Slf4jLog。isDebugEnabled(LogAdapter.java:300)~[spring-jcl-5.1.10.RELEASE.jar:5.1.10.RELEASE]位于org。springframework。安全身份验证。ProviderManager。在org上验证(ProviderManager.java:162)~[spring-security-core-5.1.6.RELEASE.jar:5.1.6.RELEASE]。springframework。安全配置。注释。网状物配置Web安全配置适配器$AuthenticationManagerDelegator。验证(websecurityconfig-adapter.java:503)~[spring-security-config-5.1.6.RELEASE.jar:5.1.6.RELEASE]
我正在尝试在我的应用程序中实现JWT。我已经创建了JWTTOkenUtil,Filter,Controller。但只有身份验证管理器不工作。我也尝试过使用CustomAuthenticationManager,但出现了相同的错误。
文件onfig.java
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class AppConfig extends WebSecurityConfigurerAdapter{
@Autowired
private JwtUserDetailService jwtUserDetailService;
@Autowired
private JwtAuthenticationProvider jwtAuthenticationProvider;
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(jwtAuthenticationProvider);
//auth.userDetailsService(jwtUserDetailService).passwordEncoder(passwordEncoder());
}
@Bean
@Override
public AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManagerBean();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests().antMatchers("/version").permitAll()
.anyRequest().authenticated()
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.addFilterBefore(jwtRequestFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Bean
public JwtRequestFilter jwtRequestFilter() {
return new JwtRequestFilter();
}
}
您需要重写WebSecurity配置适配器类的authenticationManagerBean()方法,而不是重写authenticationManager()方法。
这对我来说是一个工作配置。
@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfigurer extends WebSecurityConfigurerAdapter {
private final CustomUserDetailsService customUserDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService);
}
@Override
protected void configure (HttpSecurity http) throws Exception{
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/authenticate").permitAll()
.anyRequest().authenticated();
}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception{
return super.authenticationManagerBean();
}
@Bean
public PasswordEncoder passwordEncoder(){
return NoOpPasswordEncoder.getInstance();
}
}
您过度隐藏了错误的方法authenticationManager(),它应该是authenticationManagerBean()。
WebSecurityConfigrerAdapter
的身份验证管理器()和身份验证ManagerBean()
是两种不同的方法,您正在调用超级类的身份验证ManagerBean()方法,据我所知,它依赖于身份验证管理器()
方法。这反过来会创建方法的循环调用,最终导致StackOverflow Error
异常。
您可以尝试不重写AuthenticationManager AuthenticationManager()方法,或者在这样做时返回可靠的实现。
我想从我的对象生成一个JSON字符串: 每次我尝试这样做,我得到这个错误: 这些是我的BomItem类的属性: 我引用的BomModule类的属性: 知道是什么导致了这个错误吗?我该如何修复它?
我正在尝试使用Codename One构建服务器为J2ME构建我的应用程序。这一直运行良好,但现在我每次都会遇到构建错误。这是日志的摘录,其中在准备输出jar时提到了StackOoverflow Error: 最后一行又重复了1023次,一直到文件的结尾。 我已经将我的源代码重绕到我以前构建的版本,现在也失败了,出现了同样的错误消息。 这可能是我的开发环境发生了变化,还是构建服务器出现了问题? 任
我正在编码一个不和谐机器人,它检查用户是否在我的不和谐服务器上,以及他是否有某个角色。然而,我得到一个错误消息,如果用户不是在我的不和,尽管使用捕捉。我有以下代码: 现在,错误消息是: (节点: 15184)UnhandledPromiseRejtionWarning: DiscordAPIError:未知成员在请求Handler.execute(c:\用户\用户\桌面\DiscordBot\My
本文向大家介绍为什么JavaScript的“ var null”抛出错误而“ var undefined”没有抛出错误?,包括了为什么JavaScript的“ var null”抛出错误而“ var undefined”没有抛出错误?的使用技巧和注意事项,需要的朋友参考一下 Web浏览器会抛出“ var null”错误,因为它是保留的标识符。 您不能在ECMAScript中使用以下文字作为标识符-
问题内容: final Multimap terms = getTerms(bq); for (Term t : terms.keySet()) { Collection C = new HashSet(terms.get(t)); if (!C.isEmpty()) { for (Iterator it = C.iterator(); it.hasNext();) { BooleanClause
问题内容: 我试图将两个’Employee’对象添加到TreeSet中: 但是它抛出一个ClassCastException: 但是,如果我仅将一个对象添加到TreeSet中: 或者,如果我改用HashSet: 那就成功了。为什么会发生异常,我该如何解决? 问题答案: 要么必须实现,或者你需要提供一个比较创建时。 在文档中对此进行了详细说明: 插入排序集中的所有元素都必须实现接口(或被指定的比较器