spring secutity 2.05的配置
参考:http://blog.csdn.net/superboo/article/details/5025435
xml配置中多次出现“/”,如login-page="/userLoginAction_init",是为了区分是一个引用的名字还是跳转到一个方法中
1.导入jar
2.在web.xml中引入spring secutity3.0
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.在classpath下建一个applicationContext-security.xml
3.1.导入
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
3.2哪些资源需要过滤
<http auto-config="true" access-denied-page="/jsp/accessDenied.jsp">
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/images/**" filters="none" />
<intercept-url pattern="/js/**" filters="none" />
<!-- 增加一个filter,这点与Acegi是不一样的,不能修改默认的filter了。这个filter位于FILTER_SECURITY_INTERCEPTOR之前 -->
<custom-filter ref="myFilter" before="FILTER_SECURITY_INTERCEPTOR" />
配置需要特定角色访问的资源
<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
<security:intercept-url pattern="/space/**" access="ROLE_USER" />
3.2.1登录(注销)页面设置
<form-login login-page="/login.jsp" authentication-failure-url="/common/403.jsp" default-target-url="/admin.jsp" />
<logout logout-success-url="/login.jsp"/>
</http>
3.3认证管理方面(如何自定义一个filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,然后写三个类分别实现相应的接口)
<bean id="myFilter" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<!-- 认证管理器,实现用户认证的入口 -->
<property name="authenticationManager" ref="authenticationManager" />
<!-- 访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源 -->
<property name="accessDecisionManager" ref="accessDecisionManager" />
<!-- 资源源数据定义,即定义某一资源可以被哪些角色访问 -->
<property name="securityMetadataSource" ref="secureResourceFilterInvocationDefinitionSource" />
</bean>
3.3.1认证管理器
<security:authentication-manager alias="authenticationManager">
<!-- 认证管理器提供者[user-service-ref]引用的服务组件,通过securityManager进行对用户信息的认证-->
<security:authentication-provider ref="authenticationProvider">
</security:authentication-provider>
</security:authentication-manager>
3.3.1.1认证管理器提供者
<bean id="authenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="userDetailsService"/>
<!-- value设置为false,为了能在myAuthenticationfailureHandler(认证失败)中接受到该异常,通过异常响应不同的页面 -->
<property name="hideUserNotFoundExceptions" value="false"/>
<!-- 自定义密码加密校验机制 -->
<property name="passwordEncoder" ref="md5ShaPasswordEncoder"/>
</bean>
3.3.2访问决策器
<bean id="accessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased">
<property name="allowIfAllAbstainDecisions" value="false" />
<property name="decisionVoters">
<list>
<bean class="org.springframework.security.access.vote.RoleVoter" />
<bean class="org.springframework.security.access.vote.AuthenticatedVoter" />
</list>
</property>
</bean>
3.3.3资源源数据定义(将所有的资源和权限对应关系建立起来,即定义某一资源可以被哪些角色访问)
<beans:bean id="MySecurityMetadataSource" init-method="loadResourceDefine" class="com.softvan.spring.security.InvocationSecurityMetadataSourceService">
<beans:property name="roleService" ref="RoleService" />
<beans:property name="actionService" ref="ActionService" />
</beans:bean>
高级//////////////////////////////////////////////////////////////////////////////////////
3.2的另外一种配置
建立一个资源表和一个资源角色中间表用于存放角色所能访问的url。
然后再写一个自定义过滤器,用于读取表中角色所能访问的url。
这样需要先导入这个自定义过滤器,
<beans:bean id="filterSecurityInterceptor"
class="org.springframework.security.intercept.web.FilterSecurityInterceptor" autowire="byType">
<custom-filter before="FILTER_SECURITY_INTERCEPTOR"/>
<beans:property name="objectDefinitionSource" ref="filterInvocationDefinitionSource" />
</beans:bean>
<beans:bean id="filterInvocationDefinitionSource" class="com.lovo.JdbcFilterInvocationDefinitionSourceFactoryBean">
<beans:property name="dataSource" ref="dataSource"/>
<beans:property name="resourceQuery" value="select m.address,r.descn from t_module_role mr join t_module m on mr.m_id=m.id join t_role r on mr.r_id=r.id; "/>
</beans:bean>
再写对应的com.lovo.JdbcFilterInvocationDefinitionSourceFactoryBean类
3.2.1的高级配置
<security:form-login login-page="/userLoginAction_init" authentication-failure-handler-ref="myAuthenticationfailureHandler" authentication-success-handler-ref="myAuthenticationSuccessHandler" always-use-default-target="true" />
<security:access-denied-handler error-page="/accessDenied.jsp" />
<security:remember-me user-service-ref="userDetailsService" token-validity-seconds="123456789" />
<security:logout invalidate-session="true" logout-success-url="/" logout-url="/j_spring_security_logout" />
然后再配置两个filter
<!--自定义认证成功-->
<bean id="myAuthenticationSuccessHandler" class="com.miaopu.core.security.MyAuthenticationSuccessHandler">
<property name="defaultTargetUrl" value="/userLoginAction_entry" />
<property name="alwaysUseDefaultTargetUrl" value="false" />
<property name="userLoginService" ref="userLoginService"/>
</bean>
<!-- 认证失败 -->
<bean id="myAuthenticationfailureHandler" class="com.miaopu.core.security.MyAuthenticationFailureHandler">
<property name="defaultFailureUrl" value="/userLoginAction_loginFailure" />
<property name="allowSessionCreation" value="false"/>
</bean>
分享到:
相关推荐
Spring-Secutity-5.0.3 2018-03-28 最新的官方文档
SpringSecurity加载流程图 SpringSecurity系统启动流程 SpringSecurity调用流程
SpringBoot接口API系统实战集成了:拦截器日志处理mysqlmybatisoauth2.0,spring secutity等功能已投入生产线上使用接口服务系统,包括以下内容:通用组件服务 yfax-common客户端api系统 yfax-htt-api任务系统(集成...
Springboot,springcloud,spring secutity,spring ouath2都需要有明确的版本声明,对于不同版本的类库,实现上也有很大的区别,不同版本的授权是不能通用的。 项目定义 1.网关服务 gateway 2.授权服务 oauth,uaa 3....
整理了SpringSecurity常见示例 模块划分,帮你快速掌握Spring Security 1.核心依赖 依赖 版本 Sprint Boot 2.1.6发布 春云 格林威治SR2 Spring安全 2.1.6发布 Spring安全OAuth2 2.1.3发布 胡图尔 4.0.5 2.模块整理...
具体功能 It is the source code for spring. it include spring xml config, spring secutity, spring core, spring oxm tiger.
主要介绍了SpringBoot + SpringSecurity 短信验证码登录功能实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
about sping secutity oauth2
包含用于登录的 Spring Secutity 实现的 Maven 项目,以及用于路由 http 请求的后端的 Spring MVC 也用于实现 DAO 模型(Hibernate 反向工程),我在前端使用了 Jquery 一些引导程序。 用户 = 弗雷迪 通过 = 123
SprintBoot开发的Rest API接口项目实战,集成了拦截器,日志处理,mysql,mybatis, oauth2.0, spring secutity等,已投入生产线上使用。
Spring REST具有Spring Secutity 5.0.1 + JWT的全面安全性org.springframework.boot spring-boot-starter-parent 2.0.3.RELEASE io.jsonwebtoken jjwt 0.9.0
发票管理系统 使用 Spring Framework 进行 Web 应用程序开发。 这只是一个测试应用程序。 使用过的工具: 弹簧靴 Spring 数据 REST Spring安全 AngularJS ... Spring Secutity 调优 管理面板 用户面板
微服务框架实战,SpringCloud框架入门实战,涉及内容:注册中心,服务提供者,服务消费者,熔断器,配置服务,API Gateway等 接口API系统开发实战 基于SprintBoot开发的Rest API接口项目实战,集成了拦截器,日志...
this is a security tools,please use it to repaire you windows system!
c代码-secutity access alogrithm
c代码-secutity access alogrithm1