本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接
之前在动态权限控制的教程中,我们通过自定义
FilterInvocationSecurityMetadataSource
和
AccessDecisionManager
两个接口实现了动态权限控制。这里需要我们做的事情比较多,有一定的学习成本。今天来介绍一种更加简单和容易理解的方法实现动态权限控制。
基于表达式的访问控制
httpSecurity.authorizeRequests()
.anyRequest()
.access("hasRole('admin')")
复制代码
这种方式不用多说了吧,我们配置了表达式
hasRole('admin')
后,Spring Security会调用
SecurityExpressionRoot
的
hasRole(String role)
方法来判断当前用户是否持有角色
admin
,进而作出是否放行的决策。这种方式除了可以静态的权限控制之外还能够动态的权限控制。