- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我有一个 Rest WS,使用 WebSecurityConfigurerAdapter 来实现 HTTP 基本身份验证。允许更新密码,我需要让 WS 获取更新后的密码,而无需重新启动服务器以下是代码:
安全配置
// init a user with credentials admin/password
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
//disable csrf
.csrf().disable()
//authentic all requests
.authorizeRequests().anyRequest().authenticated().and().httpBasic()
//disable session
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(inMemoryUserDetailsManager());
}
@Bean
public InMemoryUserDetailsManager inMemoryUserDetailsManager() {
Properties users = new Properties();
users.put("admin", "password,USER,enabled");
return new InMemoryUserDetailsManager(users);
}
}
将更新密码的 Controller
@RestController
public class someController{
@Autowired
public InMemoryUserDetailsManager inMemoryUserDetailsManager;
// update password from password -> pass
@RequestMapping(...)
public updatePass(){
ArrayList<GrantedAuthority> grantedAuthoritiesList = new ArrayList<>();
grantedAuthoritiesList.add(new SimpleGrantedAuthority("USER"));
this.inMemoryUserDetailsManager.updateUser(new User("admin", "pass", grantedAuthoritiesList));
}
// another way that also doesn’t work
@RequestMapping(...)
public newUpdate(){
ArrayList<GrantedAuthority> grantedAuthoritiesList = new ArrayList<>();
grantedAuthoritiesList.add(new SimpleGrantedAuthority("USER"));
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("admin", "pass",
grantedAuthoritiesList);
SecurityContext context = SecurityContextHolder.getContext();
context.setAuthentication(auth);
SecurityContextHolder.setContext(context);
}
}
第一次使用凭据 admin/password 调用 updatePass() 后,我可以看到调试器中的密码已更新为“pass”
我认为如果我再次调用 updatePass(),我应该使用 admin/pass。但事实证明,它仍在使用旧的管理员/密码。
*我正在使用 Advance Rest Client 调用电话
最佳答案
当您更新密码时,如果用户经过身份验证,则必须在 springSecurityContext 对象中设置 UserDetails。
关于java - InMemoryUserDetailsManager updateUser 调用后未获取更新的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58600562/
嗨,我有一个 Rest WS,使用 WebSecurityConfigurerAdapter 来实现 HTTP 基本身份验证。允许更新密码,我需要让 WS 获取更新后的密码,而无需重新启动服务器以下是
编辑** 好的,由于提供的第一个答案,我能够使参数正常工作,但现在我遇到了一个问题,即我的函数完全在 Firebase 中创建一个新用户,而不是更新现有用户,即我传递给auth.admin.updat
我成功地通过电话号码进行了身份验证。 (我可以检查 firebase.auth.currentUser 我是否已登录。) 然后我调用我的 firebase 管理路由,它有 admin.auth().u
FOSUserBundle 对我正在从事的项目很有用。但我正在尝试嵌入 FOSFacebookBundle 并使其与 一起使用FOSUserBundle . 为此,我建立了自己的 Acme\MyBun
我是一名优秀的程序员,十分优秀!