我想在服务器启动时从数据库配置Authorize Requests值.目前我在
Java类文件中给出了硬核值,有没有办法从数据库中读取相同内容.
以下是示例代码:
protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/resources/**","/signup","/about").permitAll() .antMatchers("/admin/**").hasRole("ADMIN") .antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')") .anyRequest().authenticated() .and() // ... .formLogin(); }
如何从数据库中读取url,例如:/ admin / **,而不是类文件中的硬编码值
解决方法
您可以使用
Spring JDBC支持.首先,您需要设置数据库.然后,您可以检索行并适当地处理它们.
你应该有一个表,你有行和一个列填充像/ admin / **和/ db / **.另一列应填充角色访问信息.之后,按照本教程,您应该检索这些行.假设您有以下实体类:
class Matcher { public String name; public String roleInfo; }
然后,您可以遍历Matcher实体进行配置:
http.authorizeRequests() .antMatchers("/resources/**","/about").permitAll(); for (Matcher matcher : matchers) { http.authorizeRequests().antMatchers(matcher.name).access(matcher.roleInfo); } http.authorizeRequests().anyRequest().authenticated() .and() // ... .formLogin();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。