URL匹配RequestMatcher接口详解

我们知道spring secuity是控制URL的访问权限的,那么spring secuity是怎样拦截匹配URL,我们先看一个接口RequestMatcher 匹配HttpServletRequest的简单策略接口RequestMatcher,其下定义了matches方法,如果返回是true表示提供的请求与提供的匹配规则匹配,如果返回的是false则不匹配。 匹配HttpServletRequest的简单策略接口 RequestMatcher其实现类: AntPathRequestMatcher:重点 MvcRequestMatcher:重点 RegexRequestMatcher: 根据正则模式进行匹配 AnyRequestMatcher AntPathRequestMatcher 其javadoc描述如下: Matcher which compares a pre-defined ant-style pattern against the URL (servletPath + pathInfo) of an HttpServletRequest. The query string of the URL is ignored and matching is case-insensitive or case-sensitive depending on the arguments passed into the constructor.Matcher将预先定义的ant风格与URL进行比较(一个HttpServletRequest的servletPath + pathInfo)。 查询字符串网址被忽略,匹配是否区分大小写具体取决于传递给构造函数的参数(详细可查看AntPathRequestMatcher的三个入参的构造函数) Using […]

Spring Security 基于注解的接口角色访问控制

转自 1. 前言 虽然可以通过 javaConfig 的方式配置接口的角色访问控制。其实还有一种更加灵活的配置方式 基于注解 。 2. Spring Security 方法安全 Spring Security 基于注解的安全认证是通过在相关的方法上进行安全注解标记来实现的。 2.1 开启全局方法安全 我们可以在任何 @Configuration实例上使用 @EnableGlobalMethodSecurity 注解来启用全局方法安全注解功能。该注解提供了三种不同的机制来实现同一种功能,所以我们单独开一章进行探讨。 3. @EnableGlobalMethodSecurity 注解 @Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) @Target(value = { java.lang.annotation.ElementType.TYPE }) @Documented @Import({ GlobalMethodSecuritySelector.class }) @EnableGlobalAuthentication @Configuration public @interface EnableGlobalMethodSecurity {​     /**     * 基于表达式进行方法访问控制     */     boolean […]

Spring Security内置Filter

1. 前言 转自 我们可以使用 Spring Security 实现了各种登录聚合的场面。其中我们是通过在 UsernamePasswordAuthenticationFilter 之前一个自定义的过滤器实现的。我怎么知道自定义过滤器要加在 UsernamePasswordAuthenticationFilter 之前。我在这个系列开篇说了 Spring Security 权限控制的一个核心关键就是 过滤器链 ,这些过滤器如下图进行过滤传递,甚至比这个更复杂!这只是一个最小单元。 Spring Security 内置了一些过滤器,他们各有各的本事。如果你掌握了这些过滤器,很多实际开发中的需求和问题都很容易解决。今天我们来见识一下这些内置的过滤器。 2. 内置过滤器初始化 在 Spring Security 初始化核心过滤器时 HttpSecurity 会通过将 Spring Security 内置的一些过滤器以 FilterComparator 提供的规则进行比较按照比较结果进行排序注册。 2.1 排序规则 FilterComparator 维护了一个顺序的注册表 filterToOrder 。 这些就是所有内置的过滤器。 他们是通过下面的方法获取自己的序号: 通过过滤器的类全限定名从注册表 filterToOrder 中获取自己的序号,如果没有直接获取到序号通过递归获取父类在注册表中的序号作为自己的序号,序号越小优先级越高。上面的过滤器并非全部会被初始化。有的需要额外引入一些功能包,有的看 HttpSecurity 的配置情况。 我们一般禁用 CSRF 功能,就意味着 CsrfFilter 不会被注册。 3. 内置过滤器讲解 接下来我们就对这些内置过滤器进行一个系统的认识。我们将按照默认顺序进行讲解。 3.1 ChannelProcessingFilter […]

lWoHvYe 无悔,专一