`
笨小孩8086
  • 浏览: 5324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

SpringSecurity学习笔记(一)

阅读更多
一、简介
Spring Security 是 Spring Framework 的一个子项目. 之前也叫做 Acegi Secruty.
Spring Security 能用于保护各种 Java 应用程序(权限管理框架). 但在基于 Web 的应用程序中使用得最为广泛. 
Spring Security 能以声明的方式来保护 Web 应用程序的 URL 访问. 只需简单的配置即可实现.
Spring Security 通过一系列 Servlet 过滤器为 Web 应用程序提供了多种安全服务. 
Spring Security 2.x 显著简化了配置, 使用基于 XML Schema 和基于注解的配置.
----------------------------------------------------------------------------------------------------------------------------
二、配置 web.xml 文件,搭建spring-security环境
  1).搭建spring环境:spring.jar commons-logging.jar
  2).配置spring contextConfigLocation,配置监听器ContextLoaderListener
  3).加入spring-security的jar包spring-security-core-2.0.5.RELEASE.jar
  4).<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>
在 web.xml 文件里配置 DelegatingFilterProxy:
(1).将 HTTP 请求委托给 Spring 应用程序上下文中的一个 Bean。被委托的 Bean 实现了 javax.servlet.Fitler 
     接口, 但它需要受 Spring IOC 容器管理, 而不是直接在 web.xml 中配置。
(2).默认情况下, DelegatingFilterProxy会把 HTTP 请求委托给和它的 <filter-name> 属性相同的 Bean 上(也
     可以在 targetBeanName 初始参数中覆盖该 Bean 的名字)。
(3).SpringSecurity  在 web 服务器加载当前 web 应用时配置一个名称为 springSecurityFilterChain 的过滤
     器链(SpringSecurity 即通过该过滤器链为 web 应用提供安全服务), 所以 <filter-name> 应该使用这个名字.
(4).这个不仅可以配置spring-security还可以配置其他的filter,可以把filter交给spring进行管理。spring-
     security里面的filter需要用到spring中的其他的bean,但是这些bean如何被注进来?如果filter有tomcat或
     servlet等其他容器产生,则IOC中的其他的bean就不会被注进来,就必须springIOC容器去产生filter的bean,
     这样IOC容器中的其他的bean就会被注进来。不用在web.xml文件中配置filter,只要配置DelegatingFilterProxy,
     就可以了。 
----------------------------------------------------------------------------------------------------------------------------
5).添加applicationContext-springsecurity.xml,并且配置DelegatingFilterProxy。
  ①配置spring的HTTP安全,那些页面要被拦截,需要哪些权限。
      <http auto-config="true">
      <intercept-url pattern="/index.jsp" access="ROLE_ADMIN,ROLE_USER"/>
      <intercept-url pattern="/user.jsp" access="ROLE_USER"/>
      </http>
 ② 配置 spring-security 的用户信息
 <authentication-provider>
     <user-service>
  <user password="user" name="user" authorities="ROLE_USER"/>
  <user password="admin" name="admin" authorities="ROLE_ADMIN"/>
      </user-service>
 </authentication-provider>
----------------------------------------------------------------------------------------------------------------------------
6).改变xml默认的命名空间:
原来的配置方式:
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:sec="http://www.springframework.org/schema/security"
修改后的配置方式:
<beans:beans xmlns="http://www.springframework.org/schema/security"
   xmlns:beans="http://www.springframework.org/schema/beans"
步骤:1、互换xmlns属性值和xmlns:sec属性值的位置
         2、把xmlns:sec属性名改为xmlns:bean
         3、把<bean></bean>标签名改为<bean:beans>
 ----------------------------------------------------------------------------------------------------------------------------
7).登出的配置:
 <!-- 配置 spring-security 的 http 安全 -->
 <http auto-config="true">
      <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN,ROLE_USER"/>
      <intercept-url pattern="/user.jsp" access="ROLE_USER"/>
      <!-- 配置登出服务 -->
      <!-- 默认的登出路径,登出去后默认去的页面是/根目录,不销毁session,但是清空session里面的值 -->
      <logout logout-url="j_spring_security_logout" 
                           logout-success-url="logout-success.jsp" 
                           invalidate-session="true"/>
 </http>
---------------------------------------------------------------------------------------------------------------------------
8).登录的配置
<form-login login-page="login.jsp" login-processing-url="login"
              default-target-url="success.jsp" 
              always-use-default-target="true"
              authentication-failure-url="error.jsp"/>
①login-page自定的登录页面,自定义页面上的元素必须和原来的页面的相同
   (例如:action路径,name='j_username'等) 
②login-processing-url定义登录的请求路径,对应login.jsp页面中action的值
③default-target-url该属性配置登录成功后的相应的页面 ,默认是根目录。
④always-use-default-target若请求的目标页面受保护,则security则会响应login-page属性对应的页面
   (如果配置了登录页面,就显示登录页面),默认情况下,若登录成功将相应刚才请求的目标页面,
   若配置了该属性,将以default-target-url属性指定的页面作为相应。
   例如:直接请求admin.jsp
   ◆没有配置该属性:
   若admin.jsp受保护,跳转到login-page属性对应的页面,验证通过后响应admin.jsp
   ◆配置该属性:
   若admin.jsp受保护,跳转到login-page属性对应的页面,验证通过后响应default-target-url属性对应的页面
⑤authentication-failure-url配置认证失败后跳转的页面
---------------------------------------------------------------------------------------------------------------------------
9).使用spring-security的自定义标签 
①加入标签的jar包:spring-security-taglibs-2.0.5.RELEASE.jar
②<security:authorize ifAllGranted="ROLE_ADMIN" 
            ifAnyGranted="" ifNotGranted="">
   </security:authorize>
   ifAllGranted具有属性值的所有的属性才有访问权限
   ifAnyGranted具有属性值的任何一个权限就可以访问
   ifNotGranted不具有属性值的权限才可以访问
分享到:
评论

相关推荐

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    spring security学习笔记

    spring security学习笔记

    SpringSecurity笔记,编程不良人笔记

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话...通过深入学习和实践,我们可以更好地掌握SpringSecurity,为我们的应用构建坚固的安全防线。

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

    spring security3笔记

    《Spring Security 3笔记》 在深入探讨Spring Security 3的知识点之前,我们先了解下这个框架的基本概念。Spring Security是Spring生态系统中的一个组件,它为Java应用提供了全面的安全服务,包括认证、授权以及Web...

    最详细Spring Security学习资料(源码)

    Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring...

    Spring Security 资料合集

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的...通过学习这些文档,开发者可以更好地理解Spring Security的工作原理,从而更有效地实现应用的安全控制。

    Spring Security tutorial 学习笔记(一)

    在 `SpringSecurityTest01` 这个压缩包文件中,你可能找到了一个示例项目,它可能包含了配置类、控制器、视图和测试用例。通过分析这些代码,你可以更深入地理解如何在实际项目中应用 Spring Security。 总之,...

    Spring Security笔记.rar

    Spring Security 是一个强大的且高度可定制的框架,用于为Java应用程序提供身份验证和授权服务。它主要用于保护基于Spring的...通过学习本笔记,你可以逐步掌握Spring Security的基础知识,并将其运用到实际项目中。

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    Spring Security学习总结二

    在上一篇文章中,我们探讨了Spring Security中默认的`UserDetailsService`实现`InMemoryDaoImpl`,即从配置文件中读取用户信息的方法。然而,在实际应用中,这种静态的用户信息存储方式往往难以满足需求,尤其是在...

    spring security学习资料

    spring security方面的学习资料,包含:Spring+Security+3+与+CAS单点登录配置;Spring+Security3中文教程;Spring-Security安全权限管理手册;Spring+Security文库;还有一个学习笔记!

    狂神Spring Security静态资源

    Spring Security 是一个强大的安全框架,主要用于Java Web应用的安全管理,包括认证、授权和访问控制等。在Spring Boot中,Spring Security 提供了简洁的API和自动化配置,使得开发者能够快速集成安全功能。在这个名...

    SpringSecurity笔记2-SpringSecurity命名空间

    在"SpringSecurity笔记2-SpringSecurity命名空间"的学习中,还会涉及到如何自定义过滤器链,以及如何通过`&lt;custom-filter&gt;`元素插入自定义的SpringSecurity过滤器。同时,理解`&lt;access-denied-handler&gt;`和`...

    springsecurity3 学习笔记源码分析所得

    Spring Security 是一个强大的Java安全框架,用于...总的来说,Spring Security 3的学习笔记和源码分析对提升安全开发技能大有裨益,不仅可以加深理论理解,还能在实际项目中灵活运用,构建更加健壮、安全的应用系统。

    Spring Security学习笔记(一)

    以上就是Spring Security 学习笔记的第一部分,涵盖了Spring Security的基本使用和内存认证配置。后续的学习中,你将接触到更高级的主题,如自定义认证提供者、权限控制、OAuth2集成等。继续深入学习,你将能够构建...

    springSecurityTest.zip

    这个"springSecurityTest.zip"文件是一个IDEA(IntelliJ IDEA)与MAVEN项目,设计用于帮助初学者理解并入门Spring Security。下面将详细阐述Spring Security的主要概念和其在实际开发中的应用。 首先,Spring ...

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

    配合压缩包中的"配套笔记_Spring Security OAuth2.0认证授权_v1.1",读者可以详细学习如何在实际项目中设置这些组件,以及如何处理授权过程的每一个步骤。笔记可能涵盖了创建自定义授权服务器和资源服务器的配置,...

    马士兵老师spring框架学习笔记

    马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...

Global site tag (gtag.js) - Google Analytics