- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个简单的 spring web mvc 应用程序,但有一个问题。身份验证后,我尝试获取身份验证对象,但由于某种原因,它的凭据为空。
在这个项目中,我有一个自定义的 AuthenticationProvider,如下所示:
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
@PostConstruct
public void init() {
roleService.AddStandardRolesIfNeeded();
userService.AddUserWithAdminRoleIfNotExists("a");
}
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
Object credentials = authentication.getCredentials();
if(!(credentials instanceof String)) {
return null;
}
String username = authentication.getName();
String password = credentials.toString(); //password isn't null here
User user = userService.findByUsernameAndPassword(username, password);
if(user == null) {
throw new BadCredentialsException("Authentication failed for " + username);
}
List<GrantedAuthority> authorities = new ArrayList<>();
for(Role role : user.getRoles()) {
authorities.add(new SimpleGrantedAuthority(role.getName()));
}
Authentication auth = new
UsernamePasswordAuthenticationToken(username, password, authorities);
return auth;
}
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}
我感兴趣的是它是在 Spring Security 中有意完成的还是我遗漏了一些东西。
最佳答案
由于身份验证成功后凭据将被删除,因此您必须将 eraseCredentials(false)
添加到 AuthenticationManagerBuilder
配置中。就像下面的代码:
@Autowired
private CustomAuthenticationProvider customAuthProvider;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(customAuthProvider).eraseCredentials(false);
}
这已经晚了,但我认为根据问题这是正确的答案。
关于java - SecurityContextHolder.getContext().getAuthentication().getCredentials() 身份验证后返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53496272/
我正在尝试将一个表从 MySQL 导入到 Hive。我测试过我正在与 MySQL 正确建立连接。现在所有的表数据也包装在 jar 中。然后在我得到这个 NoSuchMethodError 之后。我在
我正在学习使用 AWS Cognito。我已经设置了一个用户池和一个身份池。 代码(简化): cognitoUser.authenticateUser(authenticationDetails, {
据我所知,flutter firebase 身份验证中有许多已弃用的方法。 这是我的代码; FlatButton( child: Text("Con
当我尝试模拟时 SecurityContextHolder.getContext().getAuthentication().getCredentials() 要获得 UserDetails 的 Ma
我创建了一种使用 API key 对用户进行身份验证的方法,这要归功于实现 SimplePreAuthenticatorInterface 接口(interface)的类 A。一切正常(用户已成功通过
我有以下问题。我是 flutter 和 firebase 的新手,我该如何解决。谢谢 void _handleFirebase() async { GoogleSignInAuthentica
新的 Firebase for Unity 支持刚刚发布到 Beta 版,我正在尝试用它来实现 Auth。我已经有一个 Google 登录,它使用 GooglePlayGames.PlayGamesP
我创建了一个简单的 spring web mvc 应用程序,但有一个问题。身份验证后,我尝试获取身份验证对象,但由于某种原因,它的凭据为空。 在这个项目中,我有一个自定义的 Authenticatio
本文整理了Java中org.apache.solr.common.cloud.ZkCredentialsProvider.getCredentials()方法的一些代码示例,展示了ZkCredenti
错误:线程“主”java.lang.NoSuchMethodError 中的异常:org.apache.hadoop.security.UserGroupInformation.getCredenti
我是一名优秀的程序员,十分优秀!