最近,在研究 spring security 来实现权限拦截的东西
数据库表有 user(用户表),role(角色表) ,resoure(访问资源表) ,user_role(用户角色表),roleResoure(角色资源表)
希望通过spring security 来控制权限,拒绝访问非法资源。这是我从网上找到的配置,我发现这个配置里用到的java类,都是spring security jar包中的类。
我现在一个用户登录系统,然后通过该用户,检查其角色,然后再通过角色确定能访问的资源。但是,我该怎样让这个配置其作用正确的拦截检查该用户的资源哦?
<!--
使用过滤器安全拦截器保护资源
filterSecurityInterceptor在执行转向目标url前检查objectDefinitionSource中设定的用户权限信息,
安全强制过滤器负责拦截请求,判断请求是否安全,并且给予认证和访问决策管理器一个机会来验证用户的身份和权限
过程:
首先,过滤器安全拦截器使用authenticationManager调用自己的provider来对用户的认证信息进行验证并获取用户已有的权限。
然后,使用访问决策管理器来判断用户是否拥用合适的授权来访问受保护的资源。
(objectDefinitionSource属性定义了访问URL需要的权限信息)
最后,有投票者根据用户持有认证和访问url需要的属性,调用自己的voter来投票,决定是否允许访问。
-->
<bean id="filterSecurityInterceptor"
class="org.springframework.security.intercept.web.FilterSecurityInterceptor"
p:authenticationManager-ref="authenticationManager"
p:accessDecisionManager-ref="accessDecisionManager"
p:objectDefinitionSource-ref="objectDefinitionSource">
</bean>
<bean id="objectDefinitionSource"
class="com.shopin.modules.security.intercept.web.DataBaseFilterInvocationDefinitionSource"
p:convertUrlToLowercaseBeforeComprison="true"
p:useAntPath="true"
p:cacheManager-ref="securityCacheManager"/>
<!--
访问决策管理器
验证用户是否有权限访问相应的资源(filterSecurityInterceptor中objectDefinitionSource属性定义的访问URL需要的属性信息)
-->
<bean id="accessDecisionManager"
class="org.springframework.security.vote.AffirmativeBased"
p:allowIfAllAbstainDecisions="false">
<property name="decisionVoters">
<list>
<bean class="org.springframework.security.vote.RoleVoter"/>
<bean class="org.springframework.security.vote.AuthenticatedVoter"/>
</list>
</property>
</bean>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货