我必须用mytable名称更改默认模式用户的名称。
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= ?"); }
o7jaxewo2#
除了@berzerk answer,您还可以使用更现代的方法,而不是使用 AuthenticationManagerBuilder .你可以自己提供 UserDetailsService 使用自定义查询生成bean。
AuthenticationManagerBuilder
UserDetailsService
@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 自定义实现。
authorities
JdbcUserDetailsManager
setUsersByUsernameQuery
2条答案
按热度按时间6tr1vspr1#
要使用自己的表,您必须使用authenticationmanager从该表中读取用户,如下所示。它应该能够提供用户和权限的详细信息。您可以创建自己的配置类,该类扩展WebSecurityConfigureAdapter并覆盖下面的配置方法。
o7jaxewo2#
除了@berzerk answer,您还可以使用更现代的方法,而不是使用
AuthenticationManagerBuilder
.你可以自己提供
UserDetailsService
使用自定义查询生成bean。请注意,如果您更改了
authorities
表或任何其他JdbcUserDetailsManager
使用默认情况下,您应该以与使用相同的方式更改查询setUsersByUsernameQuery
您还可以参考spring安全文档以了解有关UserDetailsService
自定义实现。