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才通过
...