您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

构建后,如何将用户添加到inMemoryAuthentication构建器中?

构建后,如何将用户添加到inMemoryAuthentication构建器中?

以下代码将满足您的要求:

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //whatever here
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(inMemoryUserDetailsManager());
    }

    @Bean
    public InMemoryUserDetailsManager inMemoryUserDetailsManager() {
        final Properties users = new Properties();
        users.put("user","pass,ROLE_USER,enabled"); //add whatever other user you need
        return new InMemoryUserDetailsManager(users);
    }

}

使用InMemoryUserDetailsManager上面配置的超级简单控制器,该控制器仅添加并检查用户的存在,如下所示:

@RestController
@RequestMapping("user")
public class SimpleSecurityController {

    private final InMemoryUserDetailsManager inMemoryUserDetailsManager;

    @Autowired
    public SimpleSecurityController(InMemoryUserDetailsManager inMemoryUserDetailsManager) {
       this.inMemoryUserDetailsManager = inMemoryUserDetailsManager;
    }

    @RequestMapping("exists/{username}")
    public boolean userExists(@PathVariable("username") String username ) {
        return inMemoryUserDetailsManager.userExists(username);
    }

    @RequestMapping("add/{username}/{password}")
    public String add(@PathVariable("username") String username, @PathVariable("password") String password) {
        inMemoryUserDetailsManager.createUser(new User(username, password, new ArrayList<GrantedAuthority>()));
        return "added";
    }
}

还请注意,如果您使用的是Spring Boot的自动配置,则需要添加

@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)

防止Spring Boot尝试自动配置安全性

@AdamMichalik指出,@EnableWebMvcSecurity已弃用,应将其替换为@EnableWebSecurity

其他 2022/1/1 18:23:47 有315人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶