源码免费下载
经过搜索资料,调试完成的源码可以免费下载https://download.csdn.net/download/m0_46485771/12478074
功能说明
通过多次扩展WebSecurityConfigurerAdapter实现了一个系统多个登录界面隔离的功能。
1、admin开头地址自动跳转到admin登录界面,否则跳转到默认登录界面
2、根据不同的角色控制系统访问路径,做到权限隔离
3、通过官网的例子进行的改造
关键注意点
1、用户验证实现UserDetailsService接口,注意角色需要ROLE_kaitou
2、扩展WebSecurityConfigurerAdapter,覆盖configure(HttpSecurity http)
第一句必须是http.antMatcher("/portal/**").authorizeRequests(),否则多个不会生效
3、此次版本为5,需要进行加密处理,具体看代码,但是页面输入直接输明文即可。
后续
初始可用,后续再更新和研究
参考文章
https://www.cnblogs.com/liuxiaoke/p/4456086.html
Spring Security5 学习3 - 实现多个登陆页面
原文链接:https://blog.csdn.net/qq_41302594/article/details/105441364
SpringBoot Security多登陆页面+登陆页面验证码+Restful
原文链接:https://blog.csdn.net/qq_22771739/article/details/84328333
官网位置https://docs.spring.io/spring-security/site/docs/5.3.2.RELEASE/reference/html5/#jc
我们可以配置多个HttpSecurity实例,就像我们可以拥有多个块一样。关键是要WebSecurityConfigurerAdapter多次扩展。例如,以下是对以开头的URL具有不同配置的示例/api/。
@EnableWebSecurity
public class MultiHttpSecurityConfig {
@Bean
public UserDetailsService userDetailsService() throws Exception {
// ensure the passwords are encoded properly
UserBuilder users = User.withDefaultPasswordEncoder();
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(users.username("user").password("password").roles("USER").build());
manager.createUser(users.username("admin").password("password").roles("USER","ADMIN").build());
return manager;
}
@Configuration
@Order(1)
public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/api/**")
.authorizeRequests(authorize -> authorize
.anyRequest().hasRole("ADMIN")
)
.httpBasic(withDefaults());
}
}
@Configuration
public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests(authorize -> authorize
.anyRequest().authenticated()
)
.formLogin(withDefaults());
}
}
}
- 正常配置身份验证
- 创建一个WebSecurityConfigurerAdapter包含的实例,@Order以指定WebSecurityConfigurerAdapter应首先考虑的对象。
- 在http.antMatcher美国,这HttpSecurity将只适用于与开头的网址/api/
- 创建的另一个实例WebSecurityConfigurerAdapter。如果URL不以/api/该配置开头,则将使用此配置。以后考虑此配置,ApiWebSecurityConfigurationAdapter因为它的@Order值是after> 1(没有@Order默认值是last)。