1. Conociendo Spring Security
1.1 Concepto de Spring Security
Spring Security
es
un marco de seguridad implementado por
Spring
usando
ideas de
AOP
y basado en
filtros de
servlets
. Proporciona un mecanismo de autenticación completo y funciones de autorización a nivel de método. Es un marco de gestión de autoridad muy bueno.
1.2 Introducción simple a Spring Security
Spring Security es amplio y profundo, ingenioso en diseño, complicado en funciones y difícil de describir en una palabra. ¡Carguemos el código directamente!
1.2.1 Crear un proyecto web e importar el paquete jar
El paquete principal spring-security-core.jar , que es necesario para cualquier función de Spring Security
spring-security-web.jar es necesario para proyectos web , incluidos los filtros y el código de infraestructura de seguridad web relacionado .
spring-security-config.jar se usa para analizar el archivo de configuración xml , y este paquete es necesario para el archivo de configuración xml de Spring Security .
spring-security-taglibs.jar Biblioteca de etiquetas dinámicas proporcionada por Spring Security , se puede usar la página jsp .
<dependency> <groupId> org.springframework.security </groupId> <artifactId> spring-security-config </artifactId> <version> 5.1.5.RELEASE </version> </dependency> <dependency> <groupId> org .springframework.security </groupId> <artifactId> spring-security-taglibs </artifactId> <version> 5.1.5.RELEASE </version> </dependency>
1.2.2 Configurar web.xml
<! - 配置 SpringSecurity -> <! - SpringSecurity 核心 过滤 器 链 -> <! - springSecurityFilterChain 名词 不能 修改 -> <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 > </mapeo-filtro>
1.2.3 Configurar spring-security.xml
<? xml version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org / 2001 / XMLSchema-instance " xmlns: context =" http://www.springframework.org/schema/context " xmlns: aop =" http://www.springframework.org/schema/aop " xmlns: tx =" http://www.springframework.org/schema/tx " xmlns: mvc =" http://www.springframework.org/schema/mvc " xmlns: security =" http://www.springframework.org/schema/ seguridad " xsi: schemaLocation =" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop. xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http: // www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd "> < ! - Liberar recursos estáticos -> <security: http pattern = "/ css / **" security = "none" /> <seguridad: http pattern = "/ img / **" security = "none" /> <seguridad: http pattern = "/ plugins / **" security = "none" /> -> <security: http pattern = "/ failer.jsp" security = "none" /> <! - Configure springSecurity -> <! - auto-config = "true" significa que el archivo de configuración de springsecurity se carga automáticamente use- expression = "true" significa usar expresiones el de spring para configurar springsecurity -> <seguridad: http auto-config = "true" use-expression = "true"> <! - Hacer que la página de autenticación sea accesible de forma anónima -> <seguridad : intercept-url pattern = "/ login.jsp" access = "permitAll ()" /> <! - Interceptar recursos -> <! - pattern = "/ **" significa interceptar todos los recursos access = "hasAnyRole ('ROLE_USER') "significa que solo el rol de ROLE_USER puede acceder a los recursos <seguridad:intercept-url pattern = "/ **" access = "hasAnyRole ('ROLE_USER')" /> <! - Configurar la información de autenticación -> <security: form-login login-page = "/ login.jsp" login-processing-url = "/ login " default-target-url =" / index.jsp " authentication-failure-url =" / failer.jsp "/> <! - Configurar la información de cierre de sesión -> <seguridad: logout logout-url =" / logout " logout -success-url = "/ login.jsp" /> <! - Elimina el filtro interceptado por csrf -> <! - <security: csrf disabled = "true" /> -> </ security: http> <! - Coloque el objeto encriptado en el contenedor IOC -> <bean id = "passwordEncoder" class = "org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" /> <! - Establecer la fuente de información de usuario de autenticación de Spring Security -> <! - La autenticación predeterminada de SpringSecurity debe estar encriptada, más {noop} significa autenticación no encriptada. <! - <seguridad: servicio-usuario> < -> <seguridad: administrador-autenticación> <seguridad: proveedor-autenticación usuario-servicio-ref = "userServiceImpl"> <seguridad: codificador-contraseña ref = "codificador-contraseña" /> </ seguridad: proveedor-autenticación> </ seguridad: administrador-autenticación> <! - & lt ;! & ndash; Establecer el origen de la información de usuario de autenticación de Spring Security & ndash; & gt; -> <! - & lt;! & ndash; La autenticación predeterminada de Spring Security debe estar encriptada, además {noop} significa que no hay autenticación de encriptación & ndash; & gt; -> <! - <seguridad: administrador-autenticación> -> <! - <seguridad: proveedor-autenticación> -> <! - <seguridad: nombre de usuario = "admin" contraseña = "{noop} admin" autoridades = "ROLE_ADMIN" /> -> <! - </ seguridad: servicio-usuario> </ seguridad: proveedor-autenticación > -> <! - </ security: authentication-manager> -> </beans>
1.2.4 El spring-security.xml introducido en el perfil applicationContext.xml en
<! - Introducción del archivo de configuración de springsecurity -> <import resource = "classpath: spring-security.xml" />
1.2.5 Ejecución de resultados