Spring security config httpSecurity object method description

Spring security config httpSecurity object method description

1. anyRequest | 匹配所有请求路径
2. access | SpringEl表达式结果为true时可以访问
3. anonymous | 匿名可以访问
4. denyAll | 用户不能访问
5. fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录)
6. hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问
7. hasAnyRole | 如果有参数,参数表示角色,则其中任何一个角色可以访问
8. hasAuthority | 如果有参数,参数表示权限,则其权限可以访问
9. hasIpAddress | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问
10. hasRole | 如果有参数,参数表示角色,则其角色可以访问
11. permitAll | 用户可以任意访问
12. rememberMe | 允许通过remember-me登录的用户访问
13. authenticated | 用户登录后可访问


配置案例

    protected void configure(HttpSecurity http) throws Exception {

        http
                //登入
                .formLogin().loginPage("/login")
                .successHandler(this.loadAuthSuccessProcessor())
                .failureHandler(this.loadAuthFailedProcessor())
                //登出
                .and().logout()
                .logoutUrl("/logout") // 退出登录
                .logoutSuccessHandler(this.loadLogoutSuccessProcessor())

                //异常
                .and().exceptionHandling()
                .accessDeniedHandler(this.loadNoPermissionProcessor())
                .authenticationEntryPoint(this.loadNoAuthProcessor())

                //授权
                .and().authorizeRequests()
                //匿名访问
                .antMatchers("/", "/login", "/register").permitAll()
                .antMatchers("/favicon.ico","/robots.txt").permitAll()
                .antMatchers("/js/**","/css/**","/img/**").permitAll()
                .antMatchers("/files/**","/ui/**").permitAll()
                .antMatchers("/swagger-ui/**").permitAll()
                //其它登录访问
                .anyRequest().authenticated()

                //禁止csrf
                .and().csrf().disable()
                //IFrame拒绝问题
                .headers().frameOptions().disable()
        ;
    }

Spring Security 常用注解

1. @EnableGlobalMethodSecurity(securedEnabled=true,prePostEnabled = true)
securedEnabled 确定安全注解 [@Secured] 是否启用
prePostEnabled 确定 前置注解[@PreAuthorize,@PostAuthorize,…] 是否启用

2. @Secured

用于判断是否具有角色,写在方法或类上,参数以 ROLE_开头

3. @PreAuthorize

访问方法或类在执行之前先判断权限,大多情况下都是使用这个注解,注解的参数和access()方法参数取值相同,都是权限表达式。

4. @PostAuthorize

方法或类执行结束后判断权限,一般不会使用到。

5. @PreFilter(filterTarget="ids”, value="filterObject%2==0”)

对传入参数进行过滤,为true才通过,filterTarget指定传入方法参数的变量名ids,对ids进行过滤,为true才通过

6. @PostFilter("filterObject.username == 'admin1')
对返回结果进行过滤,为true才通过

...

 

此条目发表在java分类目录。将固定链接加入收藏夹。