如何在oauth2 spring引导中使用mytable更改jdbc模式用户

tvz2xvvm  于 2021-10-10  发布在  Java
关注(0)|答案(2)|浏览(213)

我必须用mytable名称更改默认模式用户的名称。

6tr1vspr

6tr1vspr1#

要使用自己的表,您必须使用authenticationmanager从该表中读取用户,如下所示。它应该能够提供用户和权限的详细信息。您可以创建自己的配置类,该类扩展WebSecurityConfigureAdapter并覆盖下面的配置方法。

@Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication()
                   .dataSource(dataSource)
                   .usersByUsernameQuery("select userid,password,enabled "
                     + "from yourtable"
                     + "where userid = ?")
                   .authoritiesByUsernameQuery("select userid,authority "
                    + "from yourauthoritytable"
                    + "where userid= ?");
    }
o7jaxewo

o7jaxewo2#

除了@berzerk answer,您还可以使用更现代的方法,而不是使用 AuthenticationManagerBuilder .
你可以自己提供 UserDetailsService 使用自定义查询生成bean。

@Bean
public UserDetailsService userDetailsService(DataSource dataSource) {
    JdbcUserDetailsManager jdbcUserDetailsManager = new JdbcUserDetailsManager(dataSource);
    jdbcUserDetailsManager.setUsersByUsernameQuery("select username,password,enabled "
                + "from mytable "
                + "where username = ?");

    return jdbcUserDetailsManager;
}

请注意,如果您更改了 authorities 表或任何其他 JdbcUserDetailsManager 使用默认情况下,您应该以与使用相同的方式更改查询 setUsersByUsernameQuery 您还可以参考spring安全文档以了解有关 UserDetailsService 自定义实现。

相关问题