SpringSecurity
一、功能/职责
认证 / 鉴权
密码加密
CSRF 防护
OAuth2
二、WebSecurityConfigurerAdapter
三、HttpSecurity
authorizeRequests: 认证鉴权配置
antMatchers: 路径匹配规则
anonymous: 匹配到的请求只能匿名访问,如果已经登录则无法访问
permitAll: 赋予所有权限,直接放行,不需要权限拦截
anyRequest: 除antMatchers以外其他所有请求
authenticated: 需要认证的
formLogin: 表单登录配置对象
loginPage: 登录页面
loginProcessingUrl: 在登录页面点击登录以后,接收该登录请求的处理地址
defaultSuccessUrl: 登录成功后跳转的地址
usernameParameter: 提交登录的用户名参数名称
passwordParameter: 提交登录的密码参数名称
csrf: CSRF防护相关配置
rememberMe: 记住账号的配置信息
rememberMeParameter: 提交登录请求时,记住用户名的参数名称,该参数值用于表示是否需要记住用户名
tokenValiditySeconds:token的有效时间
userDetailsService: 用户第一次登录时,会基于用户名获取用户对象,查询用户信息后编码存储到cookie
logout: 登出配置
logoutUrl: 登出地址
logoutSuccessHandler:注销成功后,需要执行哪些处理操作
exceptionHandling: 异常处理器配置
accessDeniedHandler: 当用户没有权限时会进入的处理器
authenticationEntryPoint: 当用户没有认证时会进入的处理器
addFilterBefore: 往Security的过滤器链中加入过滤器到指定过滤器之前
四、权限注解
启用权限注解
@EnableGolbalMethodSecurity(prePostEnabled = true,securedEnabled = true, jsr250Enabled = true)
@EnableGlobalMethodSecurity注解的三个属性:
prePostEnabled 开启此属性,将支持下列注解,使用起来类似access方法,支持Sp EL表达式
@PreAuthorize:前置拦截,在方法执行前执行
@PostAuthorize: 后置拦截,在方法执行后执行,可以通过returnObject变量拿到方法执行后的返回值
@PreFilter: 对方法入参进行过滤,满足条件的参数才能传入方法
@PostFilter: 对返回值进行过滤
securedEnabled 开启此属性,将支持@Secured注解
不支持Sp EL表达式,默认只支持基于角色的拦截,且角色名必须加上前缀ROLE_, 不可取消
jsr250Enabled 开启此属性,将支持以下注解
@RolesAllowed: 判断是否拥有某一个角色(只支持角色),可以省略ROLE_前缀
@DenyAll: 拒绝所有请求
@PermitAll: 允许所有访问