`

spring security 2.0 的简单配置使用

阅读更多
http://snz.iteye.com/blog/221280

由于ss2的demo配置太过简单,要想在项目中应用的话必须进行相应扩展,这里简单写一下简单的扩展方法。

xml头中引入security命名空间

Xml代码 
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:security="http://www.springframework.org/schema/security"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  5.             http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd"  
  6.     default-lazy-init="true">  

 

 然后是启用ss2默认配置的一段代码

Xml代码 
  1. <!--  
  2.     2.0新增的命名空间,使得配置简化了很多  
  3.     auto-config 自动使用默认的配置  
  4.     access-denied-page 指定访问未授权页面时显示的页面  
  5. -->  
  6. <security:http auto-config="true" access-denied-page="/accessDenied.html">  
  7.     <security:anonymous granted-authority="BASIC" />  
  8. </security:http>  

  这段代码作用是以ss2的默认配置方式加入1.0时需要手工配置的AuthenticationProcessingFilter等多个必须配置的filter,详细可参考1.0配置和2.0参考手册。

auto-config="true" 表示使用ss2自动配置

access-denied-page="/accessDenied.html"表示拒绝访问时显示的页面

<security:anonymous granted-authority="BASIC" />表示匿名权限的authority为BASIC

 

ss对权限的管理分为认证和授权两部分,先看认证

Xml代码 
  1. <!--  
  2.     负责认证处理的filter 
  3. -->  
  4. <bean id="authenticationProcessingFilter"  
  5.     class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">  
  6.     <!-- 此行说明此filter会覆盖ss2默认配置的filter,before 被覆盖filter的别名 -->  
  7.     <security:custom-filter before="AUTHENTICATION_PROCESSING_FILTER" />  
  8.     <!-- 认证管理器 -->  
  9.     <property name="authenticationManager" ref="authenticationManager" />  
  10.     <!-- 认证失败后跳转到的页面,/spring_security_login是ss2默认的登录入口 -->  
  11.     <property name="authenticationFailureUrl"  
  12.         value="/spring_security_login" />  
  13.     <!-- 认证成功后跳转到的页面 -->  
  14.     <property name="defaultTargetUrl" value="/index.html" />  
  15. </bean>  

 这是负责认证处理的filter,中间custom-filter一行意思是将filter放在默认配置中别名为AUTHENTICATION_PROCESSING_FILTER的filter前边,即负责认证的filter(别名列表参照参考手册)。

按官方的说法,如果需要用自定义的filter覆盖默认filter,则应该将security:http标签的auto-config属性改为false,这样的话就需要增加很多手动配置项。我试了下,不改false也可以,只是运行期间会出现一个warn信息“Possible error: Filters at position 2 and 3 are both instances of xxxx”,意思是filter串中有两个相同类型的filter。

另:在2.0.2中可以使用position代替before,真正的覆盖默认filter。但是有个bug,如果使用默认登录入口的话,还是会调用默认filter,必须连登录入口一并改掉。

 

其引用的authenticationManager

Xml代码 
  1. <!--  
  2.     认证管理器  
  3.     根据用户名和密码,使用多个provider进行认证  
  4.     认证成功会生成一个Authentication,否则抛出AuthenticationException  
  5. -->  
  6. <bean id="authenticationManager"  
  7.     class="org.springframework.security.providers.ProviderManager">  
  8.     <property name="providers">  
  9.         <list>  
  10.             <ref local="daoAuthenticationProvider" />  
  11.         </list>  
  12.     </property>  
  13. </bean>  

 认证管理器通过多个provider实现基于用户名和密码的认证,多个provider中只要有一个认证成功,即成功。

 

这里只使用了一个daoPorvider

Xml代码 
  1. <!--  
  2.     认证的provider  
  3.     userDetailsService 根据用户名获取用户信息  
  4.     userCache ehcache缓存user信息。  
  5. -->  
  6. <bean id="daoAuthenticationProvider"  
  7.     class="org.springframework.security.providers.dao.DaoAuthenticationProvider">  
  8.     <property name="userDetailsService" ref="userDetailsService" />  
  9.     <property name="userCache" ref="userCache" />  
  10. </bean>  

 

userDetailsService:根据登录的用户名获取一个UserDetails,即代表一个用户的实体对象。

Xml代码 
  1. <!-- 通过dao查询用户信息 -->  
  2. <bean id="userDetailsService"  
  3.     class="org.catspaw.ss2test1.security.UserDetailsSerivceImpl">  
  4.     <property name="userDao" ref="userDao" />  
  5. </bean>  

 

 UserDetailsSerivceImpl代码

Java代码 
  1. package org.catspaw.ss2test1.security;  
  2.   
  3. import org.catspaw.ss2test1.dao.UserDao;  
  4. import org.springframework.dao.DataAccessException;  
  5. import org.springframework.security.userdetails.UserDetails;  
  6. import org.springframework.security.userdetails.UserDetailsService;  
  7. import org.springframework.security.userdetails.UsernameNotFoundException;  
  8.   
  9. /** 
  10.  * 获取UserDetails 
  11.  * 使用UserDao查询User 
  12.  *  
  13.  * @author 孙宁振 
  14.  * 
  15.  */  
  16. public class UserDetailsSerivceImpl implements UserDetailsService {  
  17.   
  18.     private UserDao userDao;  
  19.   
  20.     public UserDao getUserDao() {  
  21.         return userDao;  
  22.     }  
  23.   
  24.     public void setUserDao(UserDao userDao) {  
  25.         <span cla
    分享到:
    评论

相关推荐

    Spring-Security2.0 和 3.0中文文档

    学习Spring Security 2.0 和 3.0 的中文文档,将帮助开发者深入理解如何配置和使用其核心组件,以及如何处理常见的安全问题。文档通常会包含详细的配置示例、API参考、教程和最佳实践,帮助开发者构建安全的Java应用...

    Spring Security 2.0.x完全中文参考文档

    包含了一系列简单的示例,用于演示如何配置和使用Spring Security。 - **3.2. Contacts** 通过这个示例展示如何在实际的应用场景中使用Spring Security。 - **3.3. LDAP例子** 展示了如何使用LDAP作为用户...

    spring security 2.0 的简单配置使用(补)——用aop控制method级权限

    在本文中,我们将深入探讨如何在Spring Security 2.0版本中配置并使用AOP(面向切面编程)来实现方法级别的权限控制。首先,我们需要理解Spring Security的基础概念。 1. **Spring Security基本架构** Spring ...

    spring security oauth2.0 (讲义+代码)

    Spring Security OAuth2.0 提供了 `ResourceServerConfigurerAdapter`,可以配置资源服务器的保护规则,如哪些URL需要令牌,以及如何验证令牌。 此外,Spring Security OAuth2.0 还支持自定义权限控制。通过实现`...

    spring2.0 security

    Spring Security 2.0允许开发者通过XML或Java配置进行高度定制。你可以自定义认证提供者、权限决策管理器、访问决策投票器,甚至可以完全替换默认的过滤器链。这种灵活性使得Spring Security能够适应各种复杂的应用...

    spring security 2.0 命名空间配置(带例子)

    通过SpringSecurityTest这个压缩包文件,你可以找到相关的示例代码和配置,以帮助你更好地理解这些概念。动手实践是学习Spring Security的最佳途径,你可以尝试修改配置,观察不同设置对应用程序安全行为的影响。 ...

    spring cloud2.0 eureka server spring security配置

    在Spring Cloud 2.0版本中,Eureka Server的配置相比1.x版本确实有了一些显著的变化,尤其是在结合Spring Security进行安全设置时。Spring Cloud Eureka是Netflix Eureka的Spring Boot实现,它为微服务架构提供了...

    Spring Security 2.0 中文参考文档

    **Spring Security 2.0 知识点详解** Spring Security 是一个强大且高度可定制的权限访问控制框架,主要用于Java应用程序的安全性管理。在2.0版本中,它提供了全面的解决方案来保护Web应用程序免受各种安全威胁。...

    spring security 2.0 连接数据库 简单的配置

    终于实现了spring security 2.0 基于数据库的配置,可以连接数据库了,呵呵,由于加入了spring,jar包有些大,没有上传jar,或者新建一个工程,加入spring,然后将jar考过来或者从其他模块中考入jar, 这个工程下的...

    Spring Security 2.0.x Sample Code

    在`springsecurity-sample`中,你将找到实际的代码实现,如配置文件、控制器、服务和DAO,展示了如何将这些概念应用于实际项目。通过对这些示例的分析和学习,你可以更好地理解和实践Spring Security 2.0.x的安全...

    Spring Security 2.0 参考手册.pdf

    在Spring Security 2.0的时代,这个框架已经非常成熟,为开发者提供了许多关键功能,如身份验证、授权、访问控制以及会话管理。以下是对Spring Security 2.0的一些核心知识点的详细解释: 1. **身份验证**:Spring ...

    Springsecurity2.0

    对于那些不希望使用XML的开发者,Spring Security 2.0引入了基于Java的配置API,使得配置过程更加直观和模块化。 综上所述,Spring Security 2.0为开发者提供了一套全面、灵活且易于使用的安全框架,无论是在小型...

    Acegi(Spring Security2.0)的PPT

    Acegi,现已被Spring Security 2.0完全取代,是Java应用程序的一个安全框架,主要用于实现企业级应用的安全控制。这个框架提供了丰富的功能,包括用户登录提示、身份验证、权限检查、访问控制、会话管理以及与各种...

    spring security + oauth 2.0 实现单点登录、认证授权

    Spring Security和OAuth 2.0是两个在Web应用安全领域广泛应用的框架,它们结合使用可以构建强大的单点登录(SSO)和认证授权系统。在这个系统中,`xp-sso-server`代表了认证服务器,而`xp-sso-client-a`和`xp-sso-...

    Learning Spring boot 2.0

    本书可能涵盖了自动配置、起步依赖、健康检查、Actuator监控、Spring Data、Spring Security等核心概念。自动配置是Spring Boot的一大亮点,它可以根据项目中的依赖自动配置相关组件,极大地减少了手动配置的工作量...

    Spring Security OAuth 2.0

    使用 Spring Security OAuth 2.0,可以快速构建 OAuth 2.0 验证和授权系统。 首先,需要创建一个 Spring Boot 项目,然后添加 Spring Security OAuth 2.0 依赖项。接下来,需要配置 OAuth 2.0 配置,包括客户端配置...

    视频配套笔记_Spring Security OAuth2.0认证授权_v1.1.rar

    Spring Security OAuth2.0 是一个广泛使用的Java安全框架,它为构建安全的Web应用程序提供了强大的支持。OAuth2.0是授权框架的一个标准,允许第三方应用在用户授权的情况下访问其私有资源,而无需共享用户的登录凭证...

    spring security 2.0 安全框架实例(改进版)

    从Spring-2.0开始可以使用命名空间的配置方式。 使用它呢,可以通过附加xml架构,为传统的spring beans应用环境语法做补充。 你可以在spring参考文档得到更多信息。 命名空间元素可以简单的配置单个bean,或使用更...

    Spring Security OAuth2.0

    使用Spring Security OAuth2.0时,需要配置`http`元素以保护URL,设置过滤器链,如`OAuth2AuthenticationProcessingFilter`和`OAuth2AccessDeniedHandler`,确保只有持有有效令牌的请求才能访问受保护的资源。...

Global site tag (gtag.js) - Google Analytics