Paso a paso de inicio de sesión único (2) -Introducción a Spring Security

¿Qué quieres ver sin mirar la documentación oficial?

Aunque no es la integración de Spring Boot y Spring Security, es necesario echar un vistazo.

Combate real

No se basa en la separación de front-end y back-end, juegue esto primero y luego considere la separación de front-end y back-end.

Importar dependencias de Maven

<dependencies>
    ...
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
    ...
</dependencies>

Nada está configurado para iniciarse directamente, la cuenta es usuario y la generación automática de contraseña se imprimirá en la consola;

Clase de configuración personalizada

Cree la configuración de Spring Security Java. Esta configuración crea un filtro de Servlet, llamado springSecurityFilterChain, que es responsable de toda la seguridad en la aplicación (proteger la URL de la aplicación, verificar el nombre de usuario y contraseña enviados, redirigir al formulario de inicio de sesión, etc.).

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Bean
    @Override
    public UserDetailsService userDetailsService(){
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        //这里是否可以自定义逻辑呢?
        //配置之后登陆账号密码就成了 user 与password 这样可以看出来.
        manager.createUser(User.withUsername("user").password("password").roles("USER").build());
        return manager;
    }
}

HttpSecurity

protected void configure(HttpSecurity http) throws Exception {
	 http.formLogin()                    //  定义当需要用户登录时候,转到的登录页面。
                .and()
                .authorizeRequests()        // 定义哪些URL需要被保护、哪些不需要被保护
                .anyRequest()               // 任何请求,登录后可以访问
                .authenticated();

}

Página de inicio personalizada

De la documentación oficial.

<c:url value="/login" var="loginUrl"/>
<form action="${loginUrl}" method="post">       1
	<c:if test="${param.error != null}">        2
		<p>
			Invalid username and password.
		</p>
	</c:if>
	<c:if test="${param.logout != null}">       3
		<p>
			You have been logged out.
		</p>
	</c:if>
	<p>
		<label for="username">Username</label>
		<input type="text" id="username" name="username"/>	4
	</p>
	<p>
		<label for="password">Password</label>
		<input type="password" id="password" name="password"/>	5
	</p>
	<input type="hidden"                        6
		name="${_csrf.parameterName}"
		value="${_csrf.token}"/>
	<button type="submit" class="btn">Log in</button>
</form>

1. La POST enviada a / URL de inicio de sesión intentará autenticar al usuario

2. Si el error del parámetro de consulta existe, intente verificar y fallar

3. Si el cierre de sesión del parámetro de consulta existe, el usuario ha cerrado la sesión correctamente

4. El nombre de usuario debe aparecer como un parámetro HTTP llamado nombre de usuario

5. La contraseña debe aparecer como un parámetro HTTP llamado contraseña

6. Referencia a la sección de falsificación de solicitudes entre sitios (CSRF)

Enlace demanda personalización

protected void configure(HttpSecurity http) throws Exception {
	http
		.authorizeRequests()                                                          
			.antMatchers("/resources/**", "/signup", "/about").permitAll()
			.antMatchers("/admin/**").hasRole("ADMIN")                                 
			.antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")       
			.anyRequest().authenticated()                                             
			.and()
		// ...
		.formLogin();
}

Espera ... por favor mira la documentación oficial.

Puedes hacerlo con este blogger y
no lo llevaré.

Publicado 37 artículos originales · ganado elogios 6 · vistas 4662

Supongo que te gusta

Origin blog.csdn.net/littlewhitevg/article/details/103848101
Recomendado
Clasificación