SpringSecurity 多页面登录-附源码

源码免费下载

经过搜索资料,调试完成的源码可以免费下载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());
        }
    }
}
  1. 正常配置身份验证
  2. 创建一个WebSecurityConfigurerAdapter包含的实例,@Order以指定WebSecurityConfigurerAdapter应首先考虑的对象。
  3. 在http.antMatcher美国,这HttpSecurity将只适用于与开头的网址/api/
  4. 创建的另一个实例WebSecurityConfigurerAdapter。如果URL不以/api/该配置开头,则将使用此配置。以后考虑此配置,ApiWebSecurityConfigurationAdapter因为它的@Order值是after> 1(没有@Order默认值是last)。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值