网站一年费用,项目ppt制作模板,网站建设维护需要作假吗,互联网公司排名2022销售额文章目录 前言一、微服务鉴权1.1 前端权限检查1.2 后端权限检查1.3 优缺点 二、网关鉴权2.1 接口权限存储至Redis2.2 网关鉴权做匹配 总结 前言
在微服务架构中#xff0c;如何通过网关鉴权结合Redis缓存提升权限控制的效率与性能。首先#xff0c;文章对比了两种常见的权限… 文章目录 前言一、微服务鉴权1.1 前端权限检查1.2 后端权限检查1.3 优缺点 二、网关鉴权2.1 接口权限存储至Redis2.2 网关鉴权做匹配 总结 前言
在微服务架构中如何通过网关鉴权结合Redis缓存提升权限控制的效率与性能。首先文章对比了两种常见的权限检查方式前端权限检查和网关鉴权。前端权限检查可以实现精细化的权限控制但每个接口需要加注解操作繁琐而网关鉴权通过在网关层统一处理权限验证减少了后端服务的负担但对于Restful风格的API缺乏精细化控制并且可能影响网关性能。
一、微服务鉴权 1.1 前端权限检查
前端通过if-else判断用户是否配置按钮权限以此来显示或者隐藏前端参考代码如下 1.2 后端权限检查
后端通过PreAuthorize注解来检查权限方法这就是spring security提供的方法级别的权限拦截使用的时候我们需要开启方法拦截如下 在需要权限拦截的方法上加入注解 当然还有角色标识的拦截 1.3 优缺点
前端权限检查的方式据我所接触到的项目基本都是这种壳子还有哪些特殊的方式欢迎大家评论区留言小编也想参考学习。
优点 比较灵活可以达到精细化控制比如RestFul风格的api只需要一个注解即可达到控制的效果。 缺点 太繁琐了每个接口都要加这个注解并且微服务OAuth2体系中一般需要提供一个资源服务来做鉴权。
二、网关鉴权
网关授权就是基于接口路径匹配请求在经过网关的时候校验当前请求的路径是否在用户拥有的资源路径中。
优点 所有后端服务不需要关注接口权限不用加注解那么繁琐。 缺点 如果项目是RestFul风格的api不能精细化的控制其次会影响网关的性能。
针对网关鉴权的缺点我们可以做一些改进比如项目不采用RestFul风格的api编写其实市面上很少有全部遵循RestFul风格的代码我们将请求入参统一采用对象接受并且每个接口方法都是唯一的如新增和修改隔离开来这样就可以解决精细化控制问题其次性能上面我们可以将角色拥有的资源路径存储在redis中与之比对这样就加快鉴权速度也提升了性能。
2.1 接口权限存储至Redis 核心代码如下 redisUtils.setCacheSet(ROLE_METHOD_KEY roleCode, methods);2.2 网关鉴权做匹配 核心代码如下 // 网关鉴权
boolean status authorities ! null authorities.stream().anyMatch(userRole - redisUtils.hasCacheSet(RedisCacheConstants.ROLE_METHOD_KEY userRole, methodUrl));
if (!status) {log.warn(403 Unauthorized resource handlerusername:{}, methodUrl:{}, username, methodUrl);return RestExceptionHandler.responseErrorJson(exchange, ResultEnum.ACCESS_UNAUTHORIZED);
}我们通过Redis的 isMember() 方法来检测路径是否匹配其时间复杂度是 O(1)对于 Redis 来说它的性能非常好。通过将权限数据存储到Redis可以避免每次请求都进行数据库查询提高系统的响应速度和吞吐量。
总结
随着微服务架构的发展使用网关进行权限鉴权结合Redis缓存是一种高效且安全的解决方案。通过这种方式能够减轻后端服务的开发压力同时在保证权限控制精度的同时也提升了系统的性能。对于需要高并发、高性能的分布式系统采用此方法具有显著优势。