SpringCloud Alibaba微服务实战
|
,看完这篇文章你也不一定能得到你想要的答案,因为结论是并没有最优方案,两种方案各有千秋,只有根据自身业务选择对应的方案。本文我们将两种方案做一个简单对比,以便大伙在做方案决策有个选择参考。 解决方案对比 首先我们看看两种方案实现的原理:如果对具体实现方式有疑问的同学可以参考这篇文章: SpringCloud Alibaba微服务实战十九 - 集成RBAC授权 网关授权 基于网关授权我们又叫基于路径匹配器授权,请求在经过网关的时候校验当前请求的路径是否在用户拥有的资源路径中。 在基于路径匹配器授权时需要考虑restful风格的访问路径,如 /account-service/blog/user/{id} 或 /account-service/blog/**等,所以在网关进行授权主要是基于通配符匹配。 微服务授权 微服务授权我们又叫基于方法拦截,在资源上打上对应的方法标识然后分配给用户。在请求方法上通过对应的注解判断当前用户是否有访问此方法的权限。如SpringSecurity中的 @PreAuthorize("hasAuthority('')")注解,Shiro中的 @RequiresPermissions('')注解。不管是SpringSecurity还是Shiro他们实现原理都是基于关键字完全匹配。 优缺点对比 网关授权 优点 使用网关授权的优点很明显,后端所有微服务只需要是普通的服务即可,不再需要依赖权限那一套。 缺点 通配符匹配在网关做性能比较差,通配符要拆分,先匹配前缀,前缀匹配了再匹配通配符。这里大家可以看看org.springframework.util.AntPathMatcher#doMatch()的实现逻辑。 对于Restful风格的URL路径,不能精细化控制权限
例如一个微服务有如下API (编辑:信阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

