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>
相关文章推荐
- Spring Security笔记:Hello World
- NetBeans IDE可视化java编程菜鸟笔记--用NetBeans创建一个Hello World项目
- 自定义控件学习之菜鸟笔记一(Hello World)
- 【Qt学习笔记】——控制台Hello World代码
- 菜鸟的jquery学习笔记,jquery输入框添加默认值,jquery提交表单,jquery获取字符串长度,并截取字符串
- ACM菜鸟-DSAL编程进阶笔记【1】
- 菜鸟网络工程师的成长笔记——第2天(2016.08.19)
- scrapy学习笔记之hello world
- Javascript基础学习笔记(菜鸟必看篇)
- [学习笔记] JAVA菜鸟入门篇-JDK安装以及配置
- 菜鸟学java 网络视频笔记 第三课(by Super)(2011-11-23 20:32)
- AngularJs学习笔记__2、输出Hello World
- 菜鸟的Linux学习笔记之命令more
- 菜鸟学Linux 第102篇笔记 tomcat + JDK
- WebService学习笔记-Hello world
- js点击checkbox存入cookie自动登录(个人菜鸟笔记)
- grails学习笔记之二:Hello World
- 大龄屌丝自学笔记--Java零基础到菜鸟--029
- 菜鸟学Linux 第083篇笔记 lvs配置和健康状况
- 【笔记】菜鸟制作:设计股票交易数据在MYSQL中的表设计(表结构复制、表数据复制)