SpringSecurity

104 阅读2分钟

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: 允许所有访问