Spring Security-内置访问控制方法介绍和角色权限判断

本文涉及的产品
访问控制,不限时长
简介: Spring Security-内置访问控制方法介绍和角色权限判断

一、内置访问控制方法介绍


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


1.permitAll()


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


image.png

2.authenticated()


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


image.png

3.anonymous()


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


官方源码定义如下:


image.png

4.denyAll()


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


image.png

5.rememberMe()


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


image.png

6.fullyAuthenticated()


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


image.png



二、角色权限判断


除了之前讲解的内置权限控制。Spring Security中还支持很多其他权限控制。这些方法一般都用于用户已经被认证后,判断用户是否具有特定的要求。


1.hasAuthority(String)


判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑中创建User对象时指定的。


下图中admin就是用户的权限。admin严格区分大小写。


image.png

在配置类中通过hasAuthority(“admin”)设置具有admin权限时才能访问。


.antMatchers(**"/main1.html"**).hasAuthority(**"admin"**)
复制代码


2.hasAnyAuthority(String ...)


如果用户具备给定权限中某一个,就允许访问。


下面代码中由于大小写和用户的权限不相同,所以用户无权访问/main1.html


.antMatchers("/main1.html").hasAnyAuthority("adMin","admiN")
复制代码


3.hasRole(String)


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


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


在给用户赋予角色时角色需要以:ROLE_ 开头,后面添加角色名称。例如:ROLE_abc 其中abc是角色名,ROLE_是固定的字符开头。使用hasRole()时参数也只写abc即可。否则启动报错。


给用户赋予角色:

image.png

在配置类中直接写abc即可。

image.png

4.hasAnyRole(String ...)


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


5.hasIpAddress(String)


如果请求是指定的IP就运行访问。


可以通过request.getRemoteAddr()获取ip地址。


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


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


image.png

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

image.png

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

image.png

使用Spring Security时经常会看见403(无权限),默认情况下显示的效果如下:


image.png

而在实际项目中可能都是一个异步请求,显示上述效果对于用户就不是特别友好了。Spring Security支持自定义权限受限。



相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
1月前
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
142 5
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
240 7
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。ACL 可应用于路由器、防火墙等设备,通过设定规则控制访问。其类型包括标准、扩展、基于时间和基于用户的ACL,广泛用于企业网络和互联网安全中,以增强安全性、实现精细管理和灵活调整。然而,ACL 也存在管理复杂和可能影响性能的局限性。未来,ACL 将趋向智能化和自动化,与其他安全技术结合,提供更全面的安全保障。
112 4
|
6月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
6月前
|
安全 Java 数据库
实现基于Spring Security的权限管理系统
实现基于Spring Security的权限管理系统
|
6月前
|
安全 Java 数据安全/隐私保护
解析Spring Security中的权限控制策略
解析Spring Security中的权限控制策略
|
6月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
6月前
|
安全 Java 数据安全/隐私保护
使用Java和Spring Security实现身份验证与授权
使用Java和Spring Security实现身份验证与授权
|
6月前
|
存储 安全 Java
Spring Security在企业级应用中的应用
Spring Security在企业级应用中的应用