- 浏览: 543385 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (230)
- java (87)
- c/c++/c# (39)
- ASP.net MVC (4)
- eclipse/visual studio (3)
- tomcat/weblogic/jetty (13)
- linux/unix/windows (20)
- html/javascript/jquery/kendo/bootstrap/layui/vue/react (31)
- hibernate/struts/spring/mybatis/springboot (21)
- lucene/solr/ELK (2)
- shiro (0)
- oracle/sqlserver/mysql/postgresql (23)
- shell/python/ruby (6)
- android (0)
- maven/ant (1)
- freemarker/thymeleaf/velocity (1)
- open source project (41)
- cache/memcached/redis (0)
- nosql/hadoop/hbase/mongodb (0)
- system architecture/dubbo/zookeeper (0)
- software testing (0)
- system optimization (0)
- system security (0)
- tcp/udp/http (2)
- roller/wordpress (2)
- 工具收藏 (8)
- 文摘 (4)
- 生活 (0)
最新评论
-
coconut_zhang:
这个demo 非常完整了,是指下面说的那个html 模版,模版 ...
flying sauser, thymeleaf实现PDF文件下载 -
a93456:
你好,你有完整的demo吗? String template这 ...
flying sauser, thymeleaf实现PDF文件下载 -
yujiaao:
fn 函数循环是没有必要的啊,可以改成
protecte ...
Java 笛卡尔积算法的简单实现 -
安静听歌:
设置了.setUseTemporaryFileDuringWr ...
使用jxl导出大数据量EXCEL时内存溢出的解决办法 -
q280499693:
写的很详细,但是我现在想知道他们是怎么定位log4j.prop ...
关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同
最近查找了一些Spring security3的资料,感觉网上资料比较混乱,版本各异,对于初学者,摸不着头脑。其实找到门道,简单配置使用还是不难的。不过要想对框架运用自如,还是要阅读其的一些源码,其中lengyun,dead-knight对源码做了一些分析,是很不错的博文。自己e文又很烂,希望权威们能给出更完善和优秀的博文,也是我等的福音了。感谢以下几位网友,他们的博文还是很有帮助的:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" 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">
<global-method-security pre-post-annotations="enabled">
</global-method-security>
<!-- entry-point-ref 为用户第一次访问受保护的url时的处理程序. -->
<http use-expressions="true" entry-point-ref="authenticationEntryPoint">
<!-- 这里是拒绝用户访问的处理程序 -->
<access-denied-handler ref="accessDeniedHandler" />
<!-- 配置一些不需要认证过滤的地址 -->
<intercept-url pattern="/roots/login.jsp" filters="none" />
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/common/**" filters="none" />
<intercept-url pattern="/images/**" filters="none" />
<intercept-url pattern="/scripts/**" filters="none" />
<intercept-url pattern="/DatePicker/**" filters="none" />
<intercept-url pattern="/fckeditor/**" filters="none" />
<!-- cooki认证的配置,具体 看rememberMeServices的配置. -->
<remember-me services-ref="rememberMeServices" />
<!--
增加一个filter,这点与Acegi是不一样的,不能修改默认的filter了,这个filter位于FILTER_SECURITY_INTERCEPTOR之前
-->
<custom-filter position="LOGOUT_FILTER" ref="logoutFilter"></custom-filter>
<custom-filter before="FILTER_SECURITY_INTERCEPTOR" ref="myFilter" />
<custom-filter position="FORM_LOGIN_FILTER" ref="myAuthFilter" />
<!-- 限制用户的最大登陆数,防止一个账号被多人使用 -->
<custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
<session-management
session-authentication-strategy-ref="sas" />
</http>
<!-- 认证管理器,实现用户认证的入口,主要实现UserDetailsService接口即可 如下,可以配置多个Provider-->
<authentication-manager alias="authenticationManager">
<authentication-provider ref="daoAuthenticationProvider">
<password-encoder hash="plaintext"></password-encoder>
</authentication-provider>
<authentication-provider ref="rememberMeAuthenticationProvider">
<password-encoder hash="plaintext"></password-encoder>
</authentication-provider>
</authentication-manager>
<beans:bean id="daoAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<beans:property name="userDetailsService" ref="myUserDetailService" />
</beans:bean>
<!--
一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,
我们的所有控制将在这三个类中实现,解释详见具体配置
-->
<beans:bean id="myFilter" class="com.security.MyFilterSecurityInterceptor">
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="accessDecisionManager" ref="myAccessDecisionManagerBean" />
<beans:property name="securityMetadataSource" ref="securityMetadataSource" />
</beans:bean>
<!--
下面的3个类,已做自动扫描 <beans:bean id="myUserDetailService"
class="com.security.MyUserDetailService" />
访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源 <beans:bean
id="myAccessDecisionManagerBean"
class="com.security.MyAccessDecisionManager"> </beans:bean>
资源源数据定义,即定义某一资源可以被哪些角色访问 <beans:bean id="securityMetadataSource"
class="com.security.MyInvocationSecurityMetadataSource" >
</beans:bean>
-->
<beans:bean id="logoutFilter"
class="org.springframework.security.web.authentication.logout.LogoutFilter">
<beans:constructor-arg value="/roots/login.jsp" />
<beans:constructor-arg>
<beans:list>
<beans:ref local="rememberMeServices" />
<beans:bean
class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler"></beans:bean>
</beans:list>
</beans:constructor-arg>
<beans:property name="filterProcessesUrl" value="/ss_Loginout"></beans:property>
</beans:bean>
<beans:bean id="concurrencyFilter"
class="org.springframework.security.web.session.ConcurrentSessionFilter">
<beans:property name="sessionRegistry" ref="sessionRegistry" />
<beans:property name="expiredUrl" value="/error/expired.jsp" />
</beans:bean>
<beans:bean id="sas"
class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
<beans:constructor-arg name="sessionRegistry"
ref="sessionRegistry" />
<beans:property name="maximumSessions" value="1" />
</beans:bean>
<beans:bean id="myAuthFilter"
class="com.security.fliter.MyUsernamePasswordAuthenticationFilter">
<beans:property name="sessionAuthenticationStrategy"
ref="sas" />
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="rememberMeServices" ref="rememberMeServices"></beans:property>
<beans:property name="authenticationFailureHandler"
ref="failureHandler" />
<beans:property name="authenticationSuccessHandler"
ref="successHandler" />
<beans:property name="filterProcessesUrl" value="/ss_Login"></beans:property>
</beans:bean>
<beans:bean id="successHandler"
class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<beans:property name="defaultTargetUrl" value="/roots/index.jsp" />
</beans:bean>
<beans:bean id="failureHandler"
class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
<beans:property name="defaultFailureUrl" value="/roots/login.jsp?error=true" />
</beans:bean>
<beans:bean id="sessionRegistry"
class="org.springframework.security.core.session.SessionRegistryImpl" />
<!--
remember me fliter 此fliter的配置没有使用留做参考 <beans:bean
id="rememberMeFilter"
class="org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter">
<beans:property name="rememberMeServices" ref="rememberMeServices" />
<beans:property name="authenticationManager"
ref="authenticationManager" /> </beans:bean>
-->
<beans:bean id="rememberMeServices"
class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">
<beans:property name="userDetailsService" ref="myUserDetailService" />
<beans:property name="key" value="springsecurityCookies1" />
<beans:property name="alwaysRemember" value="true"></beans:property>
<beans:property name="tokenValiditySeconds" value="86400"></beans:property>
<beans:property name="parameter" value="_spring_security_remember_me"></beans:property>
</beans:bean>
<beans:bean id="rememberMeAuthenticationProvider"
class="org.springframework.security.authentication.RememberMeAuthenticationProvider">
<beans:property name="key" value="springsecurityCookies1" />
</beans:bean>
<!--
此fliter的配置没有使用留做参考 <beans:bean id="exceptionTranslationFilter"
class="org.springframework.security.web.access.ExceptionTranslationFilter">
<beans:property name="authenticationEntryPoint"
ref="authenticationEntryPoint"/> <beans:property
name="accessDeniedHandler" ref="accessDeniedHandler"/> </beans:bean>
-->
<beans:bean id="authenticationEntryPoint"
class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<beans:property name="loginFormUrl" value="/roots/login.jsp" />
</beans:bean>
<beans:bean id="accessDeniedHandler"
class="org.springframework.security.web.access.AccessDeniedHandlerImpl">
<beans:property name="errorPage" value="/roots/login.jsp?error=ad" />
</beans:bean>
<!-- 下面配置,security对于方法的保护 -->
<beans:bean id="methodSecurityInterceptor"
class="org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor">
<beans:property name="validateConfigAttributes">
<beans:value>false</beans:value>
</beans:property>
<beans:property name="authenticationManager">
<beans:ref bean="authenticationManager" />
</beans:property>
<beans:property name="accessDecisionManager">
<beans:ref bean="myAccessDecisionManagerBean" />
</beans:property>
<!-- 这里配置通过数据库配置来查找权限 myMethodSecurityMetadataSource 这个类继承AbstractMethodSecurityMetadataSource -->
<beans:property name="securityMetadataSource" ref="myMethodSecurityMetadataSource" />
<!--
说明:下面的模式是配置了ISome类的doSupervisor的方法只需要ROLE_SUPERVISOR 来访问 <value>
com.acegi.MethodInterceptionTest.method* = ROLE_ADMIN </value>
</property>
-->
</beans:bean>
<!--
在数据库里配置role and datebase... 下面的autoProxyCreator还是要配置切入点的.
myMethodSecurityMetadataSource 已经配置在自动扫描中.
-->
<beans:bean id="sprintsecurityAutoIntercept"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"
scope="singleton">
<beans:property name="beanNames">
<!-- 在这里配置要切的类的名称, 可以为一个配置好的bean的id,多个id用逗号分隔 -->
<beans:value>*test</beans:value>
</beans:property>
<!-- 这里就写上切入点 -->
<beans:property name="interceptorNames">
<beans:list>
<beans:value>methodSecurityInterceptor</beans:value>
</beans:list>
</beans:property>
<!-- 这个,如果你的类被代理了,比如在spring中使用,一定要设置这个属性为true -->
<beans:property name="proxyTargetClass" value="true" />
</beans:bean>
<!--这里接收security日志的配置
<bean id="authenticationLoggerListener"
class="org.springframework.security.authentication.event.LoggerListener"/>
<bean id="authorizationLoggerListener"
class="org.springframework.security.access.event.LoggerListener"/>
-->
</beans:beans>
发表评论
-
easypoi 按照模板到出excel并合并单元格
2022-11-10 21:46 147这是entity类,注解的mergeVertical是纵向合 ... -
Spring Data JPA框架系列(三)-自定义Repository接口详解
2022-05-08 09:03 0前面讲了Spring Boot 整合Spring Boot ... -
Java时区处理之Date,Calendar,TimeZone,SimpleDateFormat
2017-03-31 14:59 1367一、概述 1、问题描述 使用Java处 ... -
logback的使用和logback.xml详解
2017-03-09 11:20 2193一、logback的介绍 Logback是由log4j ... -
jxls操作excel文件
2017-03-03 14:51 1102JXLS是基于Jakarta POI API的Excel报表 ... -
flying sauser, thymeleaf实现PDF文件下载
2016-06-17 14:58 5240thymeleaf 的资料比较少,资料大部分都是和spri ... -
thymeleaf与spring整合
2016-06-15 10:08 12391、使用的是Spring EL而不是Ognl。2、访问上下文 ... -
SpringMVC 400 Bad Request 问题
2016-06-15 09:11 1968在提交表单时,发生400错误,并未进入save方法。 ... -
eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
2016-04-22 08:33 736在eclipse中用过maven的可能都遇到过这种情况,我 ... -
Java_Ant详解
2015-06-15 16:54 7321,什么是antant是构建工 ... -
httpClient通过代理(Http Proxy)进行请求
2014-09-16 14:18 1235httpClient通过代理(Http Proxy)进行请求 ... -
httpclient上传文件及传参数
2014-09-16 11:07 11645用到的包有commons-httpclient-3.0.1. ... -
Java文件下载的几种方式
2013-08-19 14:15 879public HttpServletResponse dow ... -
http上传文件深度解析-高性能http传输
2013-07-23 10:41 9772最近在做web服务器的时候将一些应用集成在了服务器里面,比 ... -
plupload实现多图片上传
2013-07-19 16:12 23302最近发现一个非常牛的上传组件(http://www.plu ... -
java servlet common-fileupload 实现的文件批量上传
2013-07-18 14:31 6427结合前辈们的代码, 写了个用servlet 和 common ... -
调用axis2 WebService三种方法
2013-06-28 13:41 1800第一:简单的使用axis2包自己实现调用 package ... -
java-jsch实现sftp文件操作
2013-06-26 13:55 3676(曾在天涯)的文章详细讲解了jsch中的函数以及用法 ht ... -
url encode的问题
2012-11-06 08:27 60491.urlencode和decode 字符的编码和解码在有中 ... -
Java集合运算(交集,并集,差集)
2012-11-02 14:59 12991在实现数据挖掘一些算法或者是利用空间向量模型来发现相似文档的时 ...
相关推荐
这个文件是 Spring Security 3 的核心配置文件,用于定义安全策略和授权规则。下面是一个基本的 security 配置文件示例: ```xml <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:...
`security_3`可能是一个包含Spring Security配置文件、Java类和其他相关资源的目录。这些类可能包括自定义的认证和授权类,如实现`UserDetailsService`接口的类,以便从数据库加载用户信息。 教程文档`教你使用_...
在提供的压缩包`springsecurity配置demo`中,你将找到示例代码和详细说明,这将帮助你更好地理解和实践上述概念。通过学习和实践这些示例,你将能够为自己的Spring应用程序构建强大的安全防护。
Spring Security 的配置主要通过 security.xml 文件实现。security.xml 文件中定义了身份验证、授权和访问控制等配置项。 六、Spring Security 的架构 Spring Security 的架构主要包括以下几层: * Presentation ...
- **使用Spring Security的XML配置文件**:通过XML配置文件来指定Spring Security的规则和策略,如认证管理器、权限管理器、过滤器链等。 - **添加Spring DelegatingFilterProxy到web.xml文件**:这是将Spring ...
- **配置**:这是Spring Security配置中最核心的部分,通过`<http>`元素可以定义哪些URL需要进行身份验证和授权。`auto-config='true'`属性表示自动配置,简化了配置过程。`<intercept-url>`元素用于指定特定URL的...
- **配置 web.xml**:在 web.xml 文件中配置 Spring Security 的过滤器链。 - **最小 `<http>` 配置**:使用 `<http>` 元素可以轻松地配置 HTTP 认证和授权规则。 - **自动配置**:`auto-config` 属性可以自动配置...
Spring Security 配置实例XML文件
这三份资料——"实战Spring Security 3.x.pdf"、"Spring Security 3.pdf" 和 "Spring Security使用手册.pdf" 将深入探讨这些概念,并提供实践指导,帮助读者掌握如何在实际项目中应用Spring Security。通过学习这些...
1. **配置文件**: `spring-security.xml`,这是Spring Security的核心配置文件,包含了过滤器链的配置、用户认证源、授权规则等。 2. **控制器 (Controller)**: 应用中的控制器可能会使用`@Secured`等注解来限制...
#### 三、配置文件详解 ##### 3. applicationContext_security.xml配置 Spring Security的配置通常放在`applicationContext_security.xml`文件中,该文件包含了Spring Security的核心配置信息。 ```xml ...
在本文中,我们将深入探讨Spring Security的配置文件小结,逐步深化到URL级别的保护。 首先,我们需要理解Spring Security的核心组件。这些包括`WebSecurityConfigurerAdapter`,这是自定义安全配置的主要入口点;`...
在压缩包文件"SpringSecurity3"中,可能包含了以下内容: - `spring-security.xml`:这是主要的配置文件,包含了上述提到的所有配置。 - `web.xml`:可能包含了Spring Security过滤器链的配置,以便在Web应用启动时...
Spring Security的配置灵活,可以通过XML配置文件、Java配置类或者注解来定制安全策略。它还提供了大量的扩展点,允许开发者根据自己的业务需求进行定制和扩展。 Spring Security的学习过程可以分为入门、进阶和...
通过配置文件中的`b.jsp`、`access-denied.jsp`、`login.jsp`等页面,我们可以构建完整的用户登录和权限控制流程。对于其他如`c.jsp`、`e.jsp`和`d.jsp`等页面,也可以按照类似的方式设置访问控制规则,以实现全面的...
Spring_Security_Demo 压缩包文件可能包含了示例项目的源代码,包括`pom.xml`(构建文件)、`src/main/java`(Java源代码)、`src/main/webapp`(Web应用资源)等。通过查看和运行这个项目,你可以更直观地了解...
根据给定的文件信息,以下是对“Spring Security3”这一主题的详细知识点解析: ### Spring Security3概述 Spring Security3是Spring框架中的一个模块,它提供了全面的安全服务,旨在为Web和非Web应用程序提供访问...
- 配置文件通常为`security.xml`,通过XML或Java配置来定义安全策略,如定义过滤器链、认证和授权规则。 总结来说,Spring Security 3是一个强大且灵活的安全框架,适用于各种复杂的安全场景。它的核心在于过滤器...
在"springsecurity.rar"文件中,可能包含了SpringSecurity的示例代码或项目模板。这些代码可能涉及到以下关键组件: 1. **Filter Security Interceptor**:这是SpringSecurity的主要过滤器,负责检查请求并决定是否...