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>
分享到:
相关推荐
5. Spring Security配置:Spring Security 5.0.3提供了基于Java的配置选项,使得开发者可以更灵活地定义安全规则和安全策略。 6. HTTP安全配置:通过配置HttpSecurity可以设置不同HTTP请求的安全规则。 7. 表单...
SpringBoot接口API系统实战集成了:拦截器日志处理mysqlmybatisoauth2.0,spring secutity等功能已投入生产线上使用接口服务系统,包括以下内容:通用组件服务 yfax-common客户端api系统 yfax-htt-api任务系统(集成...
整理了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.
management ,vue + springboot + springSecutity tomcat安装及配置教程 tomcat安装及配置教程 tomcat安装及配置教程 tomcat安装及配置教程 tomcat安装及配置教程
在之前的文章中,我们介绍了普通的帐号密码登录的方式:SpringBoot + Spring Security 基本使用及个性化登录配置。但是现在还有一种常见的方式,就是直接通过手机短信验证码登录,这里就需要自己来做一些额外的工作...
在Spring Security OAuth2中,我们可以配置这些组件以实现自定义的安全策略。 在这个场景中,我们将构建一个名为"CV"的网站,用户可以注册并上传简历。这个网站将转型为服务提供者,使用OAuth2保护用户的简历资源。...
包含用于登录的 Spring Secutity 实现的 Maven 项目,以及用于路由 http 请求的后端的 Spring MVC 也用于实现 DAO 模型(Hibernate 反向工程),我在前端使用了 Jquery 一些引导程序。 用户 = 弗雷迪 通过 = 123
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接口项目实战,集成了拦截器,日志...
"SREng Security" 是一款专门的安全工具,主要针对Windows系统进行修复和维护。这款工具能够帮助用户解决系统中出现的安全问题,例如恶意软件感染、系统异常等。在深入理解这款工具之前,我们先来逐一解析它包含的...
临时考试用
4.1 数据库连接:SpringBoot通过`spring.datasource`配置来管理数据库连接,支持多种数据库如MySQL、Oracle等。 4.2 JPA或MyBatis集成:本项目可能采用了JPA(Java Persistence API)或MyBatis作为ORM框架,简化...
"c代码-secutity access alogrithm"这个项目可能涉及到如何在C语言环境下设计和实现一套安全访问机制。下面将详细讨论与这个主题相关的一些核心知识点。 首先,我们要理解访问控制的基本概念。访问控制是信息安全的...
标题 "c代码-secutity access alogrithm1" 暗示这是一个关于C语言实现的安全访问算法的项目。这个项目可能涉及到权限控制、访问控制列表(ACL)、身份验证或授权等安全领域的核心概念。下面将详细介绍这些知识点。 ...