2、初始化权限信息
当系统初始化的时候,需要加载接口上的这些权限信息,存储在Redis中。在系统运行期间,当有用户请求接口的时候,系统会根据接口的权限信息判断用户是否有访问接口的权限。权限信息初始化过程的代码如下:
3、用户鉴权
当用户请求所有接口前,系统都应该拦截这些请求,只有在权限校验通过的情况下才运行调用接口,否则直接拒绝请求。
基于上述需求,我们需要给Controller中所有方法执行前增加切面,并将用于权限校验的代码织入到该切面中,从而在方法执行前完成权限校验。下面就详细介绍在SpringBoot中AOP的使用。
首先,我们需要在项目的pom中引入AOP的依赖:
创建切面类:
在类上必须添加@Aspect注解,用于标识当前类是一个AOP切面类
该类也必须添加@Component注解,让Spring初始化完成后创建本类的对象,并加入IoC容器中
然后需要使用@Pointcut注解定义切点;切点描述了哪些类中的哪些方法需要织入权限校验代码。我们这里将所有Controller类中的所有方法作为切点。
当完成切点的定义后,我们需要使用@Before注解声明切面织入的时机;由于我们需要在方法执行前拦截所有的请求,因此使用@Before注解。
当完成上述设置之后,所有Controller类中的函数在被调用前,都会执行权限校验代码。权限校验的详细过程在authentication()方法中完成。
关于这套源代码还有很多地方可以分析,在这里只是挑了一部分大概讨论一下就不一一写出来了,有兴趣可以自己下载看看。