Spring Security 自定义资源访问权限过滤器Fliter ,参考FilterSecurityInteceptor
2017-04-28 11:21
471 查看
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
<bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
<security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
</security:filter-security-metadata-source>
</property>
</bean>
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
<bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
<security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
</security:filter-security-metadata-source>
</property>
</bean>
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
<bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
<security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
</security:filter-security-metadata-source>
</property>
</bean>
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
<bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
<security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
</security:filter-security-metadata-source>
</property>
</bean>
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
相关文章推荐
- 用户的访问权限过滤器,防止用户直接输入URL直接访问资源。
- 用户的访问权限过滤器,防止用户直接输入URL直接访问资源。
- 利用filter()过滤器进行访问权限控制
- 通过过滤器Filter来完成登录访问权限限制
- 通过过滤器Filter来完成url访问权限限制
- JAVAWEB开发之Servlet Filter(过滤器)详解包括post和get编码过滤器、URL访问权限控制、自动登录。以及装饰模式的使用
- 使用过滤器Check静态资源的访问权限
- WCF4.0 —— Routing Service 自定义Filter控制访问权限
- 用户的访问权限过滤器,防止用户直接输入URL直接访问资源。
- 无法访问!你可能没有权限使用网络资源请与这台服。。。!
- ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。
- 网络中无法访问XP系统下共享文件,错误:计算机无法访问,您可能没有权限使用网络资源
- 【转】您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限" 的解决办法
- 操作必须使用一个可更新的查询;HTTP 500 - 内部服务器错误; 您未被授权查看该页;您不具备使用所提供的凭据查看该目录或页的权限;HTTP 错误 401.3 - 访问被资源 ACL 拒绝
- ASP.NET 应用程序中访问本地与远程资源权限问题
- 您可能没有权限使用网络资源,请......您是否有访问权限"的解决办法
- ASP.NET 应用程序中访问本地与远程资源权限(非域用户)
- ASP.NET 应用程序中访问本地与远程资源权限(非域用户)
- 小问题大困惑——无法访问,您可能没有权限使用网络资源
- ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限