个人博客地址:http://alexaccele.github.io/

springboot 要想使用spring security的模块需要导入相应的依赖

在pom文件中添加一下代码

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

然后编写一个简单的配置类 SecurityConfiger 这个配置类需要继承  WebSecurityConfigurerAdapter 这个抽象类

/*安全配置类*/
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)// 启用方法安全设置
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}

并标上@EnableWebSecurity注解,打开这个注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({WebSecurityConfiguration.class, SpringWebMvcImportSelector.class})
@EnableGlobalAuthentication
@Configuration
public @interface EnableWebSecurity {
    boolean debug() default false;
}

可以看到其中是包含了@Configuration注解的,表示这是一个配置类

 

然后我们需要重载configure方法以达到我们想要的结果

方法描述
configure(WebSecurity webSecurity)通过重载,配置SpringSecurity的Filter链
configure(HttpSecurity http)通过重载,配置如何通过拦截器保护请求
configure(AuthenticationManagerBuilder auth)通过重载,配置userdetail服务

以上方法不用全部重载,只需要根据具体需求进行重载,下面给出重载例子:


    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/css/**","/fonts/**","/js/**","/index").permitAll()//对静态文件允许访问
                .antMatchers("/admins/**").hasRole("ADMIN")//有相应角色才能访问
                .and()
                .formLogin()//基于form表单登录验证 前往/login页面
                .loginPage("/login").failureUrl("/login-error")//自定义登录界面和失败界面
    }


    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()//认证信息存储于内存中
            .withUser("root").password("123456").roles("ADMIN");
    }

以上就是springboot整合spring security的一个简单配置类,其中配置了对静态文件的访问权限,对一些特定页面的权限设置,以及对登录验证,登录页面,登录失败的配置;以及适用于生产环境的配置,将User信息保存于内存中

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐