Concepto y configuración de seguridad de muelles

Concepto y configuración de seguridad de muelles

1. ¿Qué es la seguridad de primavera?
Spring Security es un marco de seguridad que puede proporcionar soluciones de control de acceso de seguridad descriptivas para sistemas de aplicaciones empresariales basados ​​en Spring. Proporciona un conjunto de Beans que se pueden configurar en el contexto de las aplicaciones Spring, haciendo un uso completo de las funciones Spring IoC (inyección de dependencia, también conocida como inversión de control) y AOP (programación orientada a aspectos) para proporcionar funciones de control de acceso de seguridad declarativa. para el sistema de aplicaciones, lo que reduce el trabajo de escribir mucho código repetitivo para el control de seguridad del sistema empresarial.

2. ¿Cuáles son las operaciones de seguridad de primavera?
"Autenticación": Crea un asunto para el usuario como él declaró. El tema generalmente se refiere al usuario, dispositivo u otro sistema que puede realizar acciones en su sistema.
"Autorización": ¿Puede un usuario realizar una operación en su aplicación? Antes de llegar al juicio de autorización, el sujeto de la identidad ha sido establecido por el proceso de autenticación

3. ¿Cuál es el papel de la seguridad de primavera?
Generalmente se utiliza para el control de seguridad de la página, como la verificación de inicio de sesión.

4. ¿Cómo utilizar la seguridad de primavera?
Los pasos son los siguientes:
Inserte la descripción de la imagen aquí
Primero, importe las dependencias (tenga en cuenta que $ {spring-security.version} aquí se refiere a <spring.security.version> 5.0.1.RELEASE </spring.security.version>)

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring.security.version}</version>
        </dependency>

Paso 2: Configure el filtro en web.xml (nota: springSecurityFilterChain no se puede cambiar)

<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>

Paso 3: Necesita crear un archivo de configuración 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:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security.xsd">

 <security:global-method-security pre-post-annotations="enabled" />
 
    <!--配置不拦截的资源-->
    <security:http pattern="/login.jsp" security="none"/>
    <security:http pattern="/failer.jsp" security="none"/>
    <security:http pattern="/css/**" security="none"/>
    <security:http pattern="/js/**" security="none"/>
    <security:http pattern="/plugins/**" security="none"/>

    <!--
        配置具体的规则
            auto-config="true" 不用自己编写登录的页面,框架提供默认登录页面
            user-expression="false" 是否使用SPEL表达式
    -->
    <security:http auto-config="true" use-expressions="false">
        <!--配置具体的拦截规则,pattern=“请求路径的规则” access=“访问系统的人,必须有ROLE_USER的角色”-->
        <security:intercept-url pattern="/**" access="hasAnyRole('ROLE_USER''ROLE_ADMIN')"/>

        <!--定义跳转的具体页面-->
        <security:form-login login-page="/login.jsp"
                             login-processing-url="/login.do"
                             default-target-url="index.jsp"
                             authentication-failure-url="/failer.jsp"
                             authentication-success-forward-url="/pages/main.jsp"
        />
        <security:csrf disabled="true"/>

        <!--退出-->
        <security:logout invalidate-session="true" logout-url="/logout" logout-success-url="/login.jsp"/>
    </security:http>

    <!--切换成数据库中的用户名和密码-->
    <security:authentication-manager>
        <security:authentication-provider user-service-ref="userService">
            <!--配置加密的方式-->
            <security:password-encoder ref="passwordEncoder"/>
        </security:authentication-provider>
    </security:authentication-manager>
      <!--配置加密类-->
    <bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
</beans>

También hay una clase de herramienta para probar el cifrado de contraseñas (puede usar la clase de cifrado proporcionada por Spring-Security o puede escribir su propia clase de herramienta de cifrado)

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class BCryptPasswordEncoderUtils {
    
    
    private static BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
    public static String encoderPassword(String password){
    
    
        return bCryptPasswordEncoder.encode(password);
    }

    public static void main(String[] args) {
    
    
        String password = "234";
        String pwd = encoderPassword(password);
        System.out.println(pwd);
    }
}

Finalmente, si desea usarlo, debe integrar el marco, que es solo el trabajo de configuración preliminar.

Supongo que te gusta

Origin blog.csdn.net/weixin_49092628/article/details/109840689
Recomendado
Clasificación