gpt4 book ai didi

java - 为什么 GlobalAuthenticationConfigurerAdapter.init() 不可见?

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

我正在尝试使用 GlobalAuthenticationConfigurerAdapter连接自定义 UserDetailsService AuthserverApplication.java this sample Spring Boot OAuth2 sample app 的根类。

Spring OAuth2 Developer Guide说使用 GobalAuthenticationConfigurerAdapter连接UserDetailsService 。和I modified code from the example in this blog post

但是,当我尝试启动修改后的 authserver 时应用程序使用 mvn spring-boot:run ,报告以下根错误:

nested exception is java.lang.NoSuchMethodException:  
demo.AuthserverApplication$WebSecurityConfiguration$$EnhancerBySpringCGLIB$$43683c11.<init>()

来自mvn spring-boot:run的完整日志包括错误消息 can be read at a file sharing site by clicking on this link 的完整堆栈跟踪。

然后我读到 the documentation for GlobalAuthenticationConfigurerAdapter ,并确认有一个init()方法。

需要对下面的代码(或 the GitHub sample app 中的其他代码)进行哪些具体更改才能解决此错误并成功连接自定义 UserDetailsService到示例 GitHub 应用程序?

<小时/>

在您的机器上重现问题:

<小时/>

您可以通过重新创建我的步骤,在几分钟内在任何计算机上重现此问题,如下所示:

1.) 通过键入以下内容将 Spring Oauth2 示例应用程序下载到您的计算机上:

git clone https://github.com/spring-guides/tut-spring-security-and-angular-js/  

2.) 导航至tut-spring-security-and-angular-js/tree/master/oauth2/authserver 。这是正在崩溃的应用程序。当您输入mvn spring-boot:run时不进行任何更改,它应该正确启动。但随后进行以下更改以重新创建问题:

3.) 将以下内容添加到 AuthserverApplication.java连接自定义UserDetailsService :

@Configuration
class WebSecurityConfiguration extends GlobalAuthenticationConfigurerAdapter {

@Autowired
Users users;

@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(users);
}

}

4.) 添加以下内容 Users.java类(class) the demo package of the authserver app ,这样 GlobalAuthenticationConfigurerAdapter上面的3指向真正的定制UserDetailsService 。请注意,我取消了 JDBC,以便此代码示例中没有数据库依赖项:

package demo;

import java.util.List;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.provisioning.UserDetailsManager;
import org.springframework.stereotype.Service;

@Service
class Users implements UserDetailsManager {

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
String password;
List<GrantedAuthority> auth = AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_USER");
if (username.equals("Samwise")) {
auth = AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_HOBBIT");
password = "TheShire";
}
else if (username.equals("Frodo")){
auth = AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_HOBBIT");
password = "MyRing";
}
else{throw new UsernameNotFoundException("Username was not found. ");}
return new org.springframework.security.core.userdetails.User(username, password, auth);
}

@Override
public void createUser(UserDetails user) {// TODO Auto-generated method stub
}

@Override
public void updateUser(UserDetails user) {// TODO Auto-generated method stub
}

@Override
public void deleteUser(String username) {// TODO Auto-generated method stub
}

@Override
public void changePassword(String oldPassword, String newPassword) {
// TODO Auto-generated method stub
}

@Override
public boolean userExists(String username) {
// TODO Auto-generated method stub
return false;
}
}

修改后的完整代码AuthserverApplication.java ,包括新的 GlobalAuthenticationConfigurerAdapter can be found at a file sharing site by clicking on this link .

5.) 输入mvn spring-boot:run尝试启动authserver应用程序。这将触发nested exception is java.lang.NoSuchMethodException: demo.AuthserverApplication$WebSecurityConfiguration$$EnhancerBySpringCGLIB$$43683c11.<init>()如上所述的错误。

最佳答案

第一个错误只是因为您的 WebSecurityConfiguration 不可见。您可以添加protected static关键字来解决这个问题。

关于java - 为什么 GlobalAuthenticationConfigurerAdapter.init() 不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36757576/

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