后端如何实现URL权限的校验

实际上是基于hasPermission这个方法进行校验的。
在这里插入图片描述
调试可以看到有个校验授权的过程。
在这里插入图片描述
在这里插入图片描述
首先是判断权限是否为空,为空则说明已经有权限,返回true。

在这里插入图片描述
接着尝试获得当前登录的角色。如果为空,说明没有权限。从缓存中获取角色的用户编号。拿到之后还会去过滤一下,拿到只有开启状态的角色。

在这里插入图片描述
接着判断是否是超级管理员,如果是,也是return true。

在这里插入图片描述
第三段逻辑则会遍历每一个权限,判断这个权限对应的菜单,最终在这个用户上有没有角色去满足。

在这里插入图片描述
有的时候不是校验是否有权限,而是判断是否有某个角色,则可以使用hasRole这个方法。

在这里插入图片描述
实现核心是基于Spring Security提供的@PreAuthorize注解,这个注解可以添加在方法上,基于表达式判断,是否有权限。

它的实现原理是基于AOP。生效则需要配置注解@EnableGlobalMethodSecurity(prePostEnabled=true)。
在这里插入图片描述
权限表达式有两种,一种是基于角色标识的校验,一种是基于权限标识的校验。具体表达式如图所示:
在这里插入图片描述
参考资料2.功能权限 - 06、后端如何实现 URL 权限的校验?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 前端无法直接隐藏后端的接口,但是可以通过在前端代码中不直接使用后端接口的 URL 来间接地隐藏后端接口。 有几种方法可以做到这一点: 1. 使用代理服务器:前端代码中使用代理服务器的 URL,而不是后端接口的 URL。例如,前端代码中可以使用 `http://proxy.example.com/api` 来访问后端接口,而不是直接使用 `http://api.example.com`。这样就可以隐藏后端接口的真实地址。 2. 封装后端接口:在前端代码中创建一个封装了后端接口调用的函数,例如 `getData()`,然后在函数内部使用后端接口的 URL。这样,前端代码中就无需使用后端接口的 URL,也就隐藏了后端接口的真实地址。 3. 使用 CORS:使用跨域资源共享 (CORS) 机制可以让前端代码从跨域的后端接口中获取数据。这样,前端代码中就不需要使用后端接口的 URL,也就隐藏了后端接口的真实地址。 以上三种方法都可以在一定程度上帮助你隐藏后端接口的真实地址。但是,无论使用哪种方法,都不能完全隐藏后端接口,因为后端接口的真 ### 回答2: 前端可以采取以下几种方法来隐藏后端的接口: 1. 接口权限控制:在后端服务器上设置接口的权限控制规则,只允许特定的用户或角色访问特定的接口。前端在发起接口请求时,需要提供有效的身份验证信息或访问令牌,后端根据验证信息判断是否有权限访问接口。 2. 接口加密:将后端接口的请求参数进行加密操作,使得外部无法直接解析参数内容,需要在前端对参数进行解密后才能进行正确的接口请求。可以使用对称加密算法或非对称加密算法进行参数加密,并在后端进行解密处理。 3. 接口混淆:将后端接口的名称、路径或参数进行混淆处理,使得外部难以直接猜测到接口的真实含义。可以采用重命名、路径映射等方式将接口进行混淆,增加黑客获取接口信息的难度。 4. IP白名单:在后端服务器上设置IP白名单,只允许特定的IP地址或IP地址范围进行接口请求。前端在发起接口请求时,需要在网络环境中处于允许访问的IP地址范围内,否则无法正常访问后端接口。 5. 接口地址校验:在前端代码中通过一定的算法或校验规则对后端接口地址进行校验,如果不符合预期的规则,则拒绝发起该接口请求。这种方法可以有效防止非法篡改或恶意构造接口地址进行非法访问。 综上所述,在前端隐藏后端的接口需要结合多种手段,包括接口权限控制、接口加密、接口混淆、IP白名单和接口地址校验等方法,以增强后端接口的安全性和保护用户数据的机密性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值