您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
- 内容介绍
- 文章标签
- 相关推荐
本文共计915个文字,预计阅读时间需要4分钟。
最近优化了一个权限校验功能,之前其他系统在获取各系统的权限配置时,Sso都会去本地对应的权限文件读取解析一次。这种设计虽然可以实现功能,但重复读取文件效率较低。
最近优化了一个权限校验的功能,之前每次其他系统在获取各自系统的权限配置时,sso都去找到本地对应的权限文件读取解析一次。
这种设计虽然可以实现功能,但是这种反复去读取的策略并不经济,尤其在高并发的情况下更可能会成为性能瓶颈。
于是我对这块业务进行了优化,而在优化的过程中针对如何去除数组内的某些参数试验了一些写法,下面记录我认为比较优雅的写法。
首先讲下场景,设计多系统的权限统一由sso控制,那么每次用户登录其他系统后需要向sso请求“用户在该系统已有的权限”或“该用户当前是否拥有该功能的操作权限”。
那么sso需要在权限验证通过后再去获取该用户当前的权限信息并返回,于是在权限校验的service中,我在构造器里根据已有的系统类型先获取一次对应完整的权限树,后面如果发现有缺失再尝试读取文件,不缺失则直接读缓存配置。
已有的系统通过枚举来记录,假设定义如下:
public enum EnumSystemType { NoMenu = 0, // 不需要权限树的系统或程序 App01 = 1, App02 = 2, ...... }
每个系统的权限配置保存在各自的文件中,例如App01完整的权限树保存在App01.json中。
接着就是根据已有的系统去获取每个文件的内容并解析成权限树缓存下来。而在获取文件内容时,不需要获取权限的枚举(NoMenu)需要跳过找文件读取的逻辑。
本文共计915个文字,预计阅读时间需要4分钟。
最近优化了一个权限校验功能,之前其他系统在获取各系统的权限配置时,Sso都会去本地对应的权限文件读取解析一次。这种设计虽然可以实现功能,但重复读取文件效率较低。
最近优化了一个权限校验的功能,之前每次其他系统在获取各自系统的权限配置时,sso都去找到本地对应的权限文件读取解析一次。
这种设计虽然可以实现功能,但是这种反复去读取的策略并不经济,尤其在高并发的情况下更可能会成为性能瓶颈。
于是我对这块业务进行了优化,而在优化的过程中针对如何去除数组内的某些参数试验了一些写法,下面记录我认为比较优雅的写法。
首先讲下场景,设计多系统的权限统一由sso控制,那么每次用户登录其他系统后需要向sso请求“用户在该系统已有的权限”或“该用户当前是否拥有该功能的操作权限”。
那么sso需要在权限验证通过后再去获取该用户当前的权限信息并返回,于是在权限校验的service中,我在构造器里根据已有的系统类型先获取一次对应完整的权限树,后面如果发现有缺失再尝试读取文件,不缺失则直接读缓存配置。
已有的系统通过枚举来记录,假设定义如下:
public enum EnumSystemType { NoMenu = 0, // 不需要权限树的系统或程序 App01 = 1, App02 = 2, ...... }
每个系统的权限配置保存在各自的文件中,例如App01完整的权限树保存在App01.json中。
接着就是根据已有的系统去获取每个文件的内容并解析成权限树缓存下来。而在获取文件内容时,不需要获取权限的枚举(NoMenu)需要跳过找文件读取的逻辑。

