需求缘起
在上一篇我们通过自定义AccessDesionManager实现了动态权限控制,本节将通过自定义Filter进行实现动态权限,理解了上一篇文章的话,对于这篇文章就没有什么难点了。代码基于《基于URL动态权限:准备工作》在往下编码。
编码思路
对于URL动态权限配置,主要解决如下几个问题:
(1)基于URL的用户权限信息保存在哪里:需要定义一张权限表,保存权限信息,然后角色和权限有一个关联关系(准备工作已经完成)。
(2)怎么加载用户的权限信息:仍然是通过loadUserByUsername进行加载,用户的权限信息这块的编码不变(在之前已经编码)。
(3)URL对应的权限配置:这个主要是通过FilterInvocationSecurityMetadataSource进行配置。
(4)如何决定某一个用户是否有权限访问某个URL : 自定义AccessDecisionManager类