spring-security–基础–03–注解和api说明
1、HttpSecurity api
1.1、会话管理
用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保存在会话中。
spring security提供会话管理,认证通过后将身份信息放入SecurityContextHolder上下文,SecurityContext与当前线程进行绑定,方便获取用户身份。
1.1.1、参数说明
- always
- 如果没有session存在就创建一个
- ifRequired
- 为登录成功的用户创建一个Session,
- 默认
- never
- SpringSecurity 将不会创建Session,但是如果应用中其他地方创建了Session,那么Spring Security将会使用它。
- stateless
- SpringSecurity将绝对不会创建Session,也不使用Session
- 它会暗示不使用cookie,所以每个请求都需要重新进行身份验证。这种无状态架构适用于REST API及其无状态认证机制。
1.1.2、案例
1.2、常用api
- authenticated():保护URL,需要用户登录
- permitAll():指定URL无需保护,一般应用与静态资源文件
- hasRole(Stringrole):限制单个角色访问,角色将被增加"ROLE_".所以"ADMIN"将和"ROLE_ADMIN"进行比较.
- hasAuthority(Stringauthority):限制单个权限访问
- hasAnyRole(String …roles):允许多个角色访问
- hasAnyAuthority(String …authorities):允许多个权限访问
- access(Stringattribute):该方法使用SpEL表达式,所以可以创建复杂的限制
- hasIpAddress(StringipaddressExpression):限制IP地址或子网
2、@EnableWebSecurity
@Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@Target(value = { java.lang.annotation.ElementType.TYPE })
@Documented
@Import({ WebSecurityConfiguration.class,
SpringWebMvcImportSelector.class,
OAuth2ImportSelector.class })
@EnableGlobalAuthentication
@Configuration
public @interface EnableWebSecurity {
boolean debug()default false;
}
- 使得SpringMVC集成SpringSecurity的web安全支持