原创:一一哥
前言:
在前面的章节中,一一哥 已经给大家介绍了Spring Security的很多功能,在这些众多功能中,我们知道其核心功能其实就是认证+授权。
在前面我们分别基于内存模型、基于默认的数据库模型、基于自定义数据库模型实现了认证和授权功能,但是不管哪种方式,我们对某个接口的拦截限制,都是通过编写一个SecurityConfig配置类,在该类的configure (Http Security http)方法中,通过http. authorize Requests ( ). antMatchers ("/admin/**")…这样的代码进行的权限控制。
这种权限控制方法虽然也可以实现对某些接口的拦截或放行,但是不够灵活,其实Spring Security对接口的拦截或放行的写法,还有另外的方式,接下来请跟我学习一下吧!
一. 权限控制方式
在Spring Security 中,我们既可以使用 Spring Security 提供的默认方式进行授权,也可以进行自定义授权,总之在Spring Security中权限控制的实现方式是比较灵活多样的。在Spring Security 中,对接口的拦截或放行,有四种常见的权限控制方式:
利用Ant表达式实现权限控制;
利用授权注解结合SpEl表达式实现权限控制;
利用过滤器注解实现权限控制;
利用动态权限实现权限控制。
对上面说到的四种权限控制方式,我们接下来分别进行讲解实现。
二. 利用Ant表达式实现权限控制
利用Ant表达式的权限控制方式,是我们之前一直在使用的权限控制方式,在进行代码实现之前,我先对这种方式的底层实现进行简单分析。
1. Spring Security中的权限控制方法
在Spring Security中,有一个Security Expression Operations 接口,在该接口中定义了一系列的方法,用于用户权限的设置,如下图:
SecurityExpressionOperations接口中的
这些方法作用如下图所示: