一文搞懂SpringSecurity---[Day06]内置访问控制方法解析/角色权限判断

本文详细解析了SpringSecurity的内置访问控制方法,如permitAll(), authenticated(), anonymous()等,并介绍了角色权限判断,包括hasAuthority(), hasRole()以及IP地址判断。在配置中,用户权限和角色的设定对于访问控制至关重要,如需访问特定资源,用户必须满足相应的角色或权限要求。同时,文章提到了在本地测试时,localhost和127.0.0.1 IP地址的区别对访问控制的影响。" 51659789,5644713,Android MediaPlayer 播放Assets音频错误修复,"['mediaplayer', 'android', 'assets']
摘要由CSDN通过智能技术生成

一文搞懂SpringSecurity---[Day06]内置访问控制方法解析/角色权限判断

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

内置访问控制方法

Spring Security 匹配了 URL 后调用了 permitAll() 表示不需要认证,随意访问。在Spring Security中提供了多 种内置控制。

permitAll()

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

authenticated()

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

anonymous()

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

denyAll()

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

 

rememberMe()

“remember me”的用户允许访问

fullyAuthenticated()

刚好和上面的相反, 如果用户不是被remember me 的,才可以访问。

角色权限判断

除了之前讲解的内置权限控制。Spring Security中还支持很多其他权限控制。

这些方法一般都用于用户已经被认 证后,判断用户是否具有特定的要求。

hasAuthority(String)

判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑中创建 User 对象时指定的。下图中 adminnormal 就是用户的权限。dminnormal严格区分大小写。

在配置类中通过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即可。否则启动报错。

给用户赋予角色:

角色判断/IP地址判断

hasAnyRole(String ...)

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

hasIpAddress(String)

如果请求是指定的 IP 就运行访问。 可以通过

request.getRemoteAddr()获取 ip 地址。

需要注意的是在本机进行测试时 localhost 和 127.0.0.1 输出的 ip地址是不一样的。

当浏览器中通过 localhost 进行访问时控制台打印的内容:

当浏览器中通过 127.0.0.1 访问时控制台打印的内容: 

 

当浏览器中通过具体 ip 进行访问时控制台打印内容: 

 

.antMatchers("/main1.html").hasIpAddress("127.0.0.1")
​

 由此可见, 差异还是蛮大的. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾听铃的声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值