SpringSecurity安全框架常见参数

访问控制url匹配

anyRequest()

在之前认证过程中我们就已经使用过 anyRequest(),表示匹配所有的请求。一般情况下此方法都会使用,设置全部内容都需要进行认证。

.anyRequest().authenticated();

antMatcher()

方法定义如下

public C antMatchers(String... antPatterns)

参数是不定向参数,每个参数是一个 ant 表达式,用于匹配 URL规则。
规则如下:

  • ? : 匹配一个字符
  • :匹配 0 个或多个字符
  • ** :匹配 0 个或多个目录
    在实际项目中经常需要放行所有静态资源,下面演示放行 js 文件夹下所有脚本文件。
 .antMatchers("/js/**","/css/**").permitAll()

还有一种配置方式是只要是.js 文件都放行

.antMatchers("/**/*.js").permitAll()

regexMatchers()

介绍
使用正则表达式进行匹配。和 antMatchers() 主要的区别就是参数, antMatchers() 参数是 ant表达式, regexMatchers() 参数是正则表达式。
演示所有以.js 结尾的文件都被放行。

.regexMatchers( ".+[.]js").permitAll()

内置访问控制方法

permitAll()

permitAll()表示所匹配的 URL 任何人都允许访问。

authenticated()表示所匹配的 URL 都需要被认证才能访问。

anonymous()

anonymous()表示可以匿名访问匹配的URL。和permitAll()效果类似,只是设置为 anonymous()的 url会执行 filter 链中

denyAll()

denyAll()表示所匹配的 URL 都不允许被访问。

rememberMe()

被“remember me”的用户允许访问

fullyAuthenticated()

如果用户不是被 remember me 的,才可以访问。

角色权限判断

hasAuthority(String)

判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑中创建 User 对象时指定的。下图中admin和normal 就是用户的权限。admin和normal 严格区分大小写。
在这里插入图片描述
在配置类中通过 hasAuthority(“admin”)设置具有 admin 权限时才能访问

.antMatchers("/main1.html").hasAuthority("admin")

hasAnyAuthority(String …)

如果用户具备给定权限中某一个,就允许访问。
下面代码中由于大小写和用户的权限不相同,所以用户无权访问

.antMatchers("/main1.html").hasAnyAuthority("adMin","admiN")

hasRole(String)

如果用户具备给定角色就允许访问。否则出现 403。

参数取值来源于自定义登录逻辑 UserDetailsService 实现类中创建 User 对象时给 User 赋予的授权。

在给用户赋予角色时角色需要以: ROLE_开头 ,后面添加角色名称。例如:ROLE_abc 其中 abc
是角色名,ROLE_是固定的字符开头。

使用 hasRole()时参数也只写 abc 即可。否则启动报错。给用户赋予角色:

在这里插入图片描述
在配置类中直接写 abc 即可。

.antMatchers("/main1.html").hasRole("abc")

hasAnyRole(String …)

如果用户具备给定角色的任意一个,就允许被访问

hasIpAddress(String)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值