使用 Spring Security 保护 Web 应用的安全
swagger securitybasicauthfilter 自定义

swagger securitybasicauthfilter 自定义Swagger SecurityBasicAuthFilter 自定义定义•Swagger SecurityBasicAuthFilter是一个用于在Swagger UI中添加基本身份验证功能的过滤器。
•基本身份验证是一种简单的身份验证方式,要求用户提供用户名和密码来访问受保护的资源。
理由•在开发Web应用程序时,确保敏感数据或功能只能被授权用户访问是非常重要的。
•Swagger SecurityBasicAuthFilter提供了一种简单但有效的方法,在Swagger UI中添加基本身份验证功能,以确保只有授权用户能够访问API文档和相关资源。
书籍简介•书名:《Swagger in Action》•作者:Jerome Louvel, Thierry Templier, Thierry Boileau, Brice Leporini•出版年份:2017该书是一本关于使用Swagger构建强大API和微服务的实践指南。
它提供了丰富的示例和实用的技巧,使开发人员能够使用Swagger创建出色的API文档和客户端。
•书名:《OAuth Simplified》•作者:Aaron Parecki•出版年份:2014这本书详细介绍了OAuth 协议,包括基本身份验证和其他身份验证方式。
它以简单易懂的方式解释了OAuth 的概念和使用,帮助开发人员理解和实现身份验证和授权的最佳实践。
•书名:《Secure Your Web Application》•作者:Kuro L. Xu•出版年份:2016该书专注于使用构建安全的Web应用程序。
其中涵盖了基本身份验证和其他安全机制的实现方法,帮助读者了解如何在应用程序中添加身份验证和授权功能,并保护敏感数据和功能免受未经授权的访问。
•书名:《Spring Security in Action》•作者:Mert Caliskan, Eugen Paraschiv•出版年份:2017该书是一本关于使用Spring Security构建安全Web应用程序的指南。
常用的认证框架

常用的认证框架
常用的认证框架有:
1. Spring Security:基于Spring框架的安全认证框架,提供了丰富的认证和授权功能,并支持多种认证方式,如表单验证、基本认证、OAuth2等。
2. Apache Shiro:一个灵活且易于使用的Java安全框架,提供了身份认证和授权功能,支持多种认证方式,并且可以与其他框架无缝集成。
3. OAuth2:一个开放标准的授权框架,用于用户在第三方应用程序上授权访问受保护资源,常用于实现单点登录和API
访问授权。
4. JWT(JSON Web Token):一种轻量级的身份认证和授权机制,基于JSON数据格式和数字签名,通常用于跨域认证和授权。
5. CAS(Central Authentication Service):一个开源的单点登录认证系统,提供了统一的登录接口和票据管理,可实现用户在多个应用程序之间的无缝切换。
6. Keycloak:一个开源的身份和访问管理解决方案,提供了认证、授权等功能,并支持单点登录、社交登录等特性。
7. Okta:一个云身份和访问管理提供商,提供了全面的身份认
证和授权服务,可用于构建安全的应用程序和保护用户数据。
这些认证框架在开发中被广泛使用,并且提供了丰富的功能和易于集成,能够帮助开发者快速实现安全认证和授权功能。
spring_security3.2 详细配置 培训笔记

Spring Security 3.x 出来一段时间了,跟Acegi是大不同了,与2.x的版本也有一些小小的区别,网上有一些文档,也有人翻译Spring Security 3.x的guide,但通过阅读guide,无法马上就能很容易的实现一个完整的实例。
我花了点儿时间,根据以前的实战经验,整理了一份完整的入门教程,供需要的朋友们参考。
1,建一个web project,并导入所有需要的lib,这步就不多讲了。
2,配置web.xml,使用Spring的机制装载:<?xml version="1.0" e ncoding="UTF-8"?><web-app version="2.4" xmlns="/xml/ns/j2ee"xml ns:xsi="/2001/XMLS chema-i nstance"xsi:s chemaLocation="http://java.s /xml/ns/j2eehttp://java.s /xml/ns/j2ee/web-app_2_4.xsd"><conte xt-param><param-name>contextConfi gLocation</param-name><param-val ue>classpath:applicationConte xt*.xml</param-value></conte xt-param><listener><listener-class>org.springframework.we b.conte xt.Context LoaderListener</listener-class></listener><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.we b.filter.DelegatingFilterProxy</filter-class></filter><filter-mappi ng><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping><w elcome-file-list><wel come-file>l ogin.jsp</wel come-file></welcome-file-list></we b-app>这个文件中的内容我相信大家都很熟悉了,不再多说了。
websecuritycustomizer cors

WebSecurityCustomizer CORS介绍在现代的Web应用程序中,跨源资源共享(CORS)是一项重要的安全机制,用于控制浏览器在不同源之间共享资源的行为。
CORS允许服务器指定哪些源可以访问其资源,以及哪些HTTP方法和头部可以使用。
WebSecurityCustomizer是一个用于自定义和配置CORS策略的工具,它提供了一种灵活的方式来保护Web应用程序免受恶意跨域请求的攻击。
CORS的基本概念什么是跨源资源共享(CORS)?CORS是一种浏览器机制,用于控制在Web应用程序中进行跨域请求的行为。
跨域请求是指从一个源(域、协议和端口的组合)向另一个源发送HTTP请求的情况。
在同源策略下,浏览器会阻止跨域请求,以防止恶意代码获取用户的敏感信息。
CORS通过在服务器响应中添加特定的HTTP头部来允许跨域请求。
CORS的工作原理1.浏览器发送跨域请求时,会在请求的HTTP头部中添加一个Origin字段,表示请求的源。
2.服务器接收到请求后,会检查Origin字段,并根据配置决定是否允许该源访问资源。
3.如果服务器允许跨域请求,会在响应的HTTP头部中添加一个Access-Control-Allow-Origin字段,指定允许访问的源。
4.浏览器收到响应后,会检查Access-Control-Allow-Origin字段,如果与请求的源匹配,则允许响应被访问;否则,拒绝访问。
CORS的主要特性•允许服务器指定允许访问的源,可以是具体的源或通配符。
•允许服务器指定允许访问的HTTP方法和头部。
•支持预检请求,用于检查服务器是否允许跨域请求。
•支持携带凭证(如Cookie)进行跨域请求。
WebSecurityCustomizer的功能WebSecurityCustomizer是一个用于自定义和配置CORS策略的工具,它提供了以下功能:配置允许访问的源通过WebSecurityCustomizer,可以配置允许访问Web应用程序的源。
spring的意思

spring的意思Spring的意思Spring是一种开源的、轻量级的、全栈的Java应用开发框架。
它是基于IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)的编程模型,旨在简化企业级应用程序的开发。
首先,Spring的“意思”可以从字面上理解为春天的意思。
春天象征着新生、希望与活力。
同样,Spring框架为Java应用程序注入了新的活力与创造力,使得开发人员能够更加轻松地构建高效、可靠的应用程序。
Spring框架的核心特点是IoC和AOP:1. IoC(Inversion of Control):传统的编程模型中,应用程序的各个组件之间通常直接进行耦合。
而Spring采用IoC容器,将对象的依赖关系交由容器进行管理,通过配置文件或注解将对象之间的依赖关系进行解耦。
开发者只需关注业务逻辑的实现,而无需关心对象的创建和销毁,大大简化了开发流程。
2. AOP(Aspect-Oriented Programming):AOP是一种编程范式,与IoC相辅相成。
通过AOP,开发者可以将一些与业务逻辑无关但又需要在多个对象中复用的功能(如日志记录、性能监测等)进行横向抽取,并通过切面(Aspect)的方式进行集中管理。
Spring框架提供了强大的AOP支持,能够在不修改原有代码的情况下,动态地向程序中插入额外的功能。
Spring框架的设计理念是“面向接口编程”,它鼓励开发者通过接口定义业务逻辑,借助IoC容器将不同的实现进行组装。
这种松耦合的设计方式使得应用程序更加灵活、易于维护和扩展。
除了IoC和AOP,Spring框架还提供了许多其他功能和模块,方便开发者构建各种不同类型的应用程序:1. 数据访问层:Spring提供了对各种数据访问技术的支持,包括JDBC、ORM(如Hibernate)、NoSQL数据库等。
通过Spring的事务管理,开发者可以轻松地控制数据库事务,确保数据一致性。
authenticationmanager 实例 -回复

authenticationmanager 实例-回复AuthenticationManager实例是使用Spring Security框架进行身份验证的核心组件之一。
在本篇文章中,我们将详细介绍AuthenticationManager实例的概念、作用、配置和使用方法,以帮助读者加深对该组件的理解和运用。
第一部分:AuthenticationManager实例的概念和作用(大约200字)AuthenticationManager是Spring Security框架的一个关键接口,用于身份验证。
它负责处理身份验证请求,并将其委托给指定的AuthenticationProvider进行验证。
AuthenticationProvider是AuthenticationManager的实现类,实际执行验证逻辑的地方。
AuthenticationManager实例的作用是根据用户提供的凭据(例如用户名和密码)验证用户身份。
它是连接用户和系统的关键部分,将用户的请求与系统中已注册的用户进行对比,并在匹配成功后授权用户访问系统资源。
通过AuthenticationManager可以防止未经授权的访问,并确保系统的安全性。
第二部分:AuthenticationManager实例的配置(大约400字)在Spring Security中配置AuthenticationManager实例是一个关键步骤,以确保正确的身份验证和授权。
在常见的Spring项目中,AuthenticationManager通常通过SecurityConfig类进行配置。
首先,创建一个类并实现WebSecurityConfigurerAdapter接口,该接口为配置Spring Security提供了一些基本的方法。
在该类中,通过覆盖configure(AuthenticationManagerBuilder auth)方法实现AuthenticationManager的配置。
Web应用安全与防御学习指南
Web应用安全与防御学习指南第一章:Web应用的概念与特点Web应用是指基于互联网的应用程序,通过浏览器进行访问和使用。
与传统的桌面应用程序相比,Web应用具有跨平台性、方便性和易扩展性的特点。
然而,Web应用也面临着各种安全威胁,如跨站脚本攻击、SQL注入攻击等。
第二章:Web应用安全威胁2.1 跨站脚本攻击(XSS)跨站脚本攻击(XSS)是一种常见的Web应用安全威胁,攻击者通过在Web页面中插入恶意脚本代码,攻击用户的浏览器并获取敏感信息。
针对XSS攻击,开发人员应采取输入验证和输出编码等措施。
2.2 SQL注入攻击SQL注入攻击是指攻击者通过在Web应用的输入字段中插入恶意SQL语句,从而获取、修改或删除数据库中的数据。
为了防止SQL注入攻击,开发人员应使用参数化查询或存储过程等防御手段。
2.3 跨站请求伪造(CSRF)攻击跨站请求伪造(CSRF)攻击是指攻击者通过伪装成合法用户发送请求,从而进行恶意操作。
为了防止CSRF攻击,开发人员应在请求中添加随机的令牌,并进行验证。
第三章:Web应用安全防御措施3.1 安全编码规范安全编码规范是保障Web应用安全的重要措施,开发人员应遵循一些最佳实践,如禁止使用已知的不安全函数、限制用户输入长度、对用户输入进行过滤和验证等。
3.2 访问控制管理访问控制管理是防止未授权访问的有效手段,开发人员应采用合适的身份验证和授权机制,对用户进行身份验证,并根据其权限控制其对应用资源的访问。
3.3 加密与解密为了保护Web应用中的敏感信息,开发人员应对数据进行加密和解密操作。
常见的加密算法有对称加密算法和非对称加密算法,如AES、RSA等。
3.4 安全日志安全日志是记录和监控Web应用安全状况的重要手段,开发人员应对关键操作进行日志记录,如用户登录、权限操作等,并及时监控和分析日志以发现异常行为。
第四章:Web应用安全测试4.1 渗透测试渗透测试是模拟真实攻击者的攻击行为,检测Web应用的安全性。
信息安全技术的应用及编程实现
信息安全技术的应用及编程实现一、信息安全技术概述信息安全技术是指为保护信息系统、网络与数据的完整性、可用性和机密性而采取的一系列措施和技术手段。
信息安全在现代社会中日益重要,其应用范围已经涉及到几乎所有的领域。
常见的信息安全技术包括加密、认证、访问控制、防火墙等。
其中,加密技术是信息安全中最基本的技术手段,即将明文信息通过一定的加密算法转换为密文,在进行传输和存储时保证信息的机密性。
认证技术是指对使用者进行身份验证,包括密码、生物特征、智能卡等各种方法。
访问控制是指控制系统中各个用户对不同信息的访问权限。
防火墙是指对网络流量进行筛选和过滤的设备,可以有效地阻止恶意攻击和网络流量洪水等攻击。
二、信息安全技术在计算机编程中的应用计算机编程中信息安全技术的应用是为了保证程序和系统在运行期间的安全性和机密性。
例如,在云计算中,为了保证客户端与服务端之间的安全传输,可以使用SSL(Secure Sockets Layer)协议或TLS(Transport Layer Security)协议进行数据加密和身份认证。
在编写Web应用程序时,可以使用防御性编程技术以及加密算法,以防止SQL注入攻击、XSS(Cross Site Scripting)等攻击手段。
在移动应用程序开发中,可以使用数字签名技术对应用程序进行认证,以保证应用程序的完整性和来源可追溯性;同时,可以使用数据加密技术保证程序中的用户数据和隐私信息的安全性。
三、信息安全技术的编程实现1. 加密算法加密算法应用于计算机编程中,是保护机密信息的一个必要手段。
对于普通用户来说,可以使用现有的加密库和算法实现文件加密、数据加解密等功能。
但是对于程序员来说,需要了解加密算法的原理和基础,以便根据具体需求进行调整和优化。
在Web应用程序中,可以使用AES、DES等对称密钥算法加密用户的登录信息和敏感数据。
此外,还可以使用公钥加密算法(如RSA)进行身份验证和数字签名。
anonymousauthenticationfilter
anonymousauthenticationfilter在基于Web的应用程序中,身份验证是一个至关重要的组成部分。
身份验证可以确保只有授权的用户才能访问受保护的资源,从而保护应用程序免受恶意攻击和未经授权的访问。
在许多情况下,应用程序需要允许匿名用户访问某些资源,例如公共网站上的文章或博客。
在这种情况下,匿名身份验证过滤器可以起到很好的作用。
AnonymousAuthenticationFilter是一个Spring Security过滤器,它允许未经身份验证的用户访问受保护的资源。
它允许您配置一个特定的Principal来表示匿名用户。
这个Principal可以是一个简单的字符串,也可以是一个自定义的Java对象。
当用户访问受保护的资源时,AnonymousAuthenticationFilter将创建一个新的Authentication对象,该对象包含该Principal和一个具有“ROLE_ANONYMOUS”权限的空的GrantedAuthority列表。
配置AnonymousAuthenticationFilter非常简单。
只需在Spring Security配置文件中添加以下代码即可:```<security:anonymous enabled='true' key='anonymousUser' userDetailsService-ref='anonymousUserDetailsService'/>```这将启用匿名身份验证,并将anonymousUser作为表示匿名用户的Principal。
AnonymousAuthenticationFilter还需要一个UserDetailsService来加载与该Principal相关联的用户详细信息。
在这种情况下,我们可以使用一个简单的UserDetailsService实现来返回一个空的UserDetails对象:```public class AnonymousUserDetailsService implements UserDetailsService {public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {return new User(username, '', newArrayList<GrantedAuthority>());}}```在这个例子中,我们只是返回一个空的UserDetails对象,因为匿名用户没有任何权限。
基于SpringBoot框架应用开发技术的分析与研究
基于SpringBoot框架应用开发技术的分析与研究一、SpringBoot框架简介SpringBoot是由Pivotal团队提供的一个开源的Java开发框架,它基于Spring框架构建,可以轻松地创建独立的、生产级别的基于Spring的应用程序。
SpringBoot遵循“约定优于配置”的理念,大大简化了Spring应用的开发和部署。
SpringBoot还提供了一系列的功能,包括自动化配置、起步依赖、嵌入式Web服务器等,使开发者能够更加高效地开发应用。
二、SpringBoot框架的优势1.简化配置SpringBoot采用了约定优于配置的理念,大量的默认配置减少了开发者的配置工作。
开发者可以专注于业务逻辑的开发,无需配置大量的xml文件或繁杂的配置代码。
这使得开发者能够更加高效地完成应用的开发工作。
2.自动化配置SpringBoot提供了自动化的配置功能,能够根据应用的依赖和环境自动配置Spring 应用。
开发者只需引入相应的依赖,SpringBoot即可自动处理配置工作。
这种特性极大地简化了应用的部署和维护工作,同时也提高了应用的稳定性和可靠性。
3.嵌入式Web服务器SpringBoot内置了多种嵌入式的Web服务器,包括Tomcat、Jetty、Undertow等,开发者无需单独配置和部署Web服务器。
这使得应用的部署变得更加简单,同时也减少了对外部Web服务器的依赖,提高了应用的独立性。
4.起步依赖SpringBoot通过起步依赖的方式,能够快速地构建各种类型的应用。
开发者可以选择所需的起步依赖,SpringBoot即可自动引入和配置相关的依赖,大大简化了应用的构建过程。
5.监控管理SpringBoot提供了丰富的监控管理功能,包括健康检查、指标监控、日志管理等,开发者可以通过这些功能实时监控应用的运行状态和性能指标,及时发现和处理问题。
三、SpringBoot框架的应用场景1.微服务架构由于SpringBoot具有轻量级和快速开发的特性,非常适合用于构建微服务架构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用 Spring Security 保护 Web 应用的安全 简介: 安全一直是 Web 应用开发中非常重要的一个方面。从安全的角度来说,需要考虑用户认证和授权两个方面。为 Web 应用增加安全方面的能力并非一件简单的事情,需要考虑不同的认证和授权机制。Spring Security 为使用 Spring 框架的 Web 应用提供了良好的支持。本文将详细介绍如何使用 Spring Security 框架为 Web 应用提供安全支持。 在 Web 应用开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中。 本文详细介绍了如何使用 Spring Security 来保护 Web 应用的安全。Spring Security 本身以及 Spring 框架带来的灵活性,能够满足一般 Web 应用开发的典型需求,并允许开发人员进行定制。下面首先简单介绍 Spring Security。 Spring Security 简介 Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。 对于上面提到的两种应用情景,Spring Security 框架都有很好的支持。在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。 本文将通过三个具体的示例来介绍 Spring Security 的使用。第一个示例是一个简单的企业员工管理系统。该系统中存在三类用户,分别是普通员工、经理和总裁。不同类别的用户所能访问的资源不同。对这些资源所能执行的操作也不相同。Spring Security 能帮助开发人员以简单的方式满足这些安全性相关的需求。第二个示例展示了如何与 LDAP 服务器进行集成。第三个示例展示了如何与 OAuth 进行集成。完整的示例代码见 参考资料。下面首先介绍基本的用户认证和授权的实现。
基本用户认证和授权 本节从最基本的用户认证和授权开始对 Spring Security 进行介绍。一般来说,Web 应用都需要保存自己系统中的用户信息。这些信息一般保存在数据库中。用户可以注册自己的账号,或是由系统管理员统一进行分配。这些用户一般都有自己的角色,如普通用户和管理员之类的。某些页面只有特定角色的用户可以访问,比如只有管理员才可以访问 /admin 这样的网址。下面介绍如何使用 Spring Security 来满足这样基本的认证和授权的需求。 首先需要把 Spring Security 引入到 Web 应用中来,这是通过在 web.xml添加一个新的过滤器来实现的,如 代码清单 1 所示。
清单 1. 在 web.xml 中添加 Spring Security 的过滤器 springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain /*
Spring Security 使用的是 Servlet 规范中标准的过滤器机制。对于特定的请求,Spring Security 的过滤器会检查该请求是否通过认证,以及当前用户是否有足够的权限来访问此资源。对于非法的请求,过滤器会跳转到指定页面让用户进行认证,或是返回出错信息。需要注意的是,代码清单 1 中虽然只定义了一个过滤器,Spring Security 实际上是使用多个过滤器形成的链条来工作的。 下一步是配置 Spring Security 来声明系统中的合法用户及其对应的权限。用户相关的信息是通过 org.springframework.security.core.userdetails.UserDetailsService 接口来加载的。该接口的唯一方法是 loadUserByUsername(String username),用来根据用户名加载相关的信息。这个方法的返回值是 org.springframework.security.core.userdetails.UserDetails 接口,其中包含了用户的信息,包括用户名、密码、权限、是否启用、是否被锁定、是否过期等。其中最重要的是用户权限,由 org.springframework.security.core.GrantedAuthority 接口来表示。虽然 Spring Security 内部的设计和实现比较复杂,但是一般情况下,开发人员只需要使用它默认提供的实现就可以满足绝大多数情况下的需求,而且只需要简单的配置声明即可。 在第一个示例应用中,使用的是数据库的方式来存储用户的信息。Spring Security 提供了 org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl 类来支持从数据库中加载用户信息。开发人员只需要使用与该类兼容的数据库表结构,就可以不需要任何改动,而直接使用该类。代码清单 2 中给出了相关的配置。
清单 2. 声明使用数据库来保存用户信息 class="org.springframework.jdbc.datasource.DriverManagerDataSource"> class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">
如 代码清单 2 所示,首先定义了一个使用 Apache Derby 数据库的数据源,Spring Security 的 org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl 类使用该数据源来加载用户信息。最后需要配置认证管理器使用该 UserDetailsService。 接着就可以配置用户对不同资源的访问权限了。这里的资源指的是 URL 地址。配置的内容如 代码清单 3 所示。sec 是 Spring Security 的配置元素所在的名称空间的前缀。
清单 3. 配置对不同 URL 模式的访问权限
第一个示例应用中一共定义了三种角色:普通用户、经理和总裁,分别用 ROLE_USER、ROLE_MANAGER 和 ROLE_PRESIDENT 来表示。代码清单 3 中定义了访问不同的 URL 模式的用户所需要的角色。这是通过 元素来实现的,其属性 pattern 声明了请求 URL 的模式,而属性 access 则声明了访问此 URL 时所需要的权限。需要按照 URL 模式从精确到模糊的顺序来进行声明。因为 Spring Security 是按照声明的顺序逐个进行比对的,只要用户当前访问的 URL 符合某个 URL 模式声明的权限要求,该请求就会被允许。如果把 代码清单 3 中本来在最后的 URL 模式 /** 声明放在最前面,那么当普通用户访问 /manager_portal.do 的时候,该请求也会被允许。这显然是不对的。通过 元素声明了使用 HTTP 表单验证。也就是说,当未认证的用户试图访问某个受限 URL 的时候,浏览器会跳转到一个登录页面,要求用户输入用户名和密码。 元素声明了提供用户注销登录的功能。默认的注销登录的 URL 是 /j_spring_security_logout,可以通过属性 logout-url 来修改。 当完成这些配置并运行应用之后,会发现 Spring Security 已经默认提供了一个登录页面的实现,可以直接使用。开发人员也可以对登录页面进行定制。通过 的属性 login-page、login-processing-url 和 authentication-failure-url就可以定制登录页面的 URL、登录请求的处理 URL 和登录出现错误时的 URL 等。从这里可以看出,一方面 Spring Security 对开发中经常会用到的功能提供了很好的默认实现,另外一方面也提供了非常灵活的定制能力,允许开发人员提供自己的实现。 在介绍如何用 Spring Security 实现基本的用户认证和授权之后,下面介绍其中的核心