您的位置:首页 > 编程语言 > Java开发

Spring security 3 菜鸟笔记之hello world

2010-11-25 12:27 309 查看
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/application*.xml
</param-value>
</context-param>

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:config/log4j.properties</param-value>
</context-param>

<context-param>
<param-name>webAppRootKey</param-name>
<param-value>arch.root</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!--
- Publishes events for session creation and destruction through the application
- context. Optional unless concurrent session control is being used.
-->
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>

<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>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

application-sccurity.xml

<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"> 
<!--
Web/HTTP安全 - 最复杂的部分。设置过滤器和相关的服务bean来应用框架验证机制, 保护URL,渲染登录和错误页面还有更多。
业务类(方法)安全 - 可选的安全服务层。
AuthenticationManager - 通过框架的其它部分,处理认证请求。
AccessDecisionManager - 提供访问的决定,适用于web以及方法的安全。一个默认的主体会被注册,但是你也可以选择自定义一个,使用正常的spring bean语法进行声明。
AuthenticationProviders - 验证管理器验证用户的机制。 该命名空间提供几种标准选项,意味着使用传统语法添加自定义bean。
UserDetailsService - 密切相关的认证供应器,但往往也需要由其他bean需要。
-->

<!-- URL保护   web安全服务配置
auto-config="true"  意味着一此服务已经自动添加进来了,如:表单登录和"remember-me"服务   相当于以下配置
<http>
<form-login />
<http-basic />
<logout />
</http>
use-expressions="true"   表示在计算角色时使用表达式  此时 直接写ROLE_USER 是不支持的

auto-config="true" 包含的过滤器如下:
1 org.springframework.security.context.HttpSessionContextIntegrationFilter
位于过滤器链顶端 作用:(1)  判断session是否存在SecurityContext 如果有取出存放在SecurityContextHolder 中
如果没有就创建一个共Spring security 后面使用
(2) 执行完毕后, 清空SecurytContextHolder 中的内容,SecurytContext  采用ThreadLocal 的形式存放在SecurityContextHolder 中
2 org.springframework.security.ui.logout.LogoutFilter
处理 /j_spring_security_logout 注销请求    清空session和SecurityContextHolder  结合 RememberMe 清空Cookie
3  org.springframework.security.ui.webapp.AuthenticationProcessingFilter
处理登录请求 /j_spring_security_check      登录表单提交请求   验证用户有的合法性
4 org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter
处理/spring_security_login请求,生成一个默认的登录界面
5 org.springframework.security.ui.basicauth.BasicProcessingFilter
进行 HttpBasic 认证
6 org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter
包装客户端请求
7 org.springframework.security.ui.rememberme.RememberMeProcessingFilter
提供Cookie 功能
8 org.springframework.security.providers.anonymous.AnonymousProcessingFilter
匿名访问的处理   分配匿名访问用户的权限
9 org.springframework.security.ui.ExceptionTranslationFilter
捕获FilterSecurityInterceptor抛出的异常,Error画面定向
10 SessionFixationProtectionFilter
防止session固化攻击
11 org.springframework.security.intercept.web.FilterSecurityInterceptor
是所有过滤器的控制中心
1 用户尚未登录 抛出 AuthenticationCredentialsNotFoundException 尚未认证
2 用户已经登录,但没有访问权限 抛出 AccessDeniedException   拒绝访问
3 如果已登录,有权限放行
-->
<http auto-config="true">
<intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<!--
<form-login login-page='/login.jsp'  login-processing-url="/login"  authentication-failure-url="/error.jsp"
default-target-url='/common/common.jsp'
always-use-default-target='true' />
-->
<!--
自定义登录页面
<intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page='/login.jsp'/>

也可以覆盖auto-config=true的配置
<http auto-config='true'>
<intercept-url pattern="/css/**" filters="none"/>
<intercept-url pattern="/login.jsp*" filters="none"/>
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page='/login.jsp'/>
</http>

<remember-me />
<session-management invalid-session-url="/timeout.jsp">
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>
-->
</http>

<!-- 用户认证管理  用户信息也可能通过user-service 的properties 属性 -->
<authentication-manager>
<authentication-provider>
<!-- <jdbc-user-service data-source-ref="dataSource"/>  使用数据库认证 -->
<user-service>
<user name="jimi" password="jimi" authorities="ROLE_USER,ROLE_ADMIN"/>
<user name="bob" password="bob" authorities="ROLE_USER"/>
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: