> Java > java지도 시간 > SpringBoot가 SpringSecurity를 ​​신속하게 통합하는 방법

SpringBoot가 SpringSecurity를 ​​신속하게 통합하는 방법

WBOY
풀어 주다: 2023-05-16 21:56:28
앞으로
1001명이 탐색했습니다.

1.스프링시큐리티란?

Spring Security는 Spring 프레임워크 기반의 보안 프레임워크로, 인증, 권한 부여, 공격 방지 등 일반적인 보안 기능을 구현하기 위한 경량 API 및 도구 세트를 제공합니다. 기본인증, 폼인증, OAuth3.0, OpenID Connect 등 다양한 인증방식을 지원합니다. Spring Security에는 구성 가능한 옵션이 많기 때문에 개발자는 애플리케이션의 필요에 따라 이를 사용자 정의할 수 있습니다. Spring Security는 Java 엔터프라이즈 애플리케이션에 가장 널리 사용되는 보안 프레임워크 중 하나가 되었습니다.

2. SpringSecurity의 원칙

Spring Security의 주요 원칙은 필터 체인을 통해 애플리케이션 리소스를 보호하는 것입니다. 인증, 권한 부여, 공격 방어 등과 같은 다양한 보안 기능은 필터 체인의 다양한 필터에 의해 처리됩니다.

요청이 애플리케이션에 도달하면 가장 바깥쪽 필터에 의해 먼저 차단됩니다. 이 필터는 요청을 다음 필터로 전달하고 그 전에 로깅 및 교차 출처 요청 처리 등과 같은 일부 사전 처리를 수행합니다. 각 필터는 가장 안쪽 필터가 요청을 처리하고 응답을 반환할 때까지 필터 체인에서 순차적으로 실행됩니다.

Spring Security는 필터 체인을 구성하여 애플리케이션 리소스를 보호합니다. 각 필터에는 다음과 같은 다양한 책임이 있습니다.

(1) AuthenticationFilter: 사용자를 인증하는 데 사용되는 인증 필터입니다.

(2)AuthorizationFilter: 사용자가 리소스에 액세스할 수 있는 권한이 있는지 확인하는 데 사용되는 인증 필터입니다.

(3) CsrfFilter: CSRF 공격을 방지하는 데 사용되는 CSRF(교차 사이트 요청 위조 방지) 필터입니다.

(4) ExceptionTranslationFilter는 보안 관련 예외를 처리하고 예외 변환을 담당하는 필터입니다.

(5) SessionManagementFilter: 세션 관리 필터, 사용자 세션을 관리하는 데 사용됩니다.

개발자는 Spring Security에서 제공하는 API 및 도구를 기반으로 자신의 보안 정책을 사용자 정의하고 이를 필터 체인에 추가할 수 있습니다. 애플리케이션이 요청을 받으면 이러한 보안 정책에 따라 리소스를 보호합니다.

3. SpringBoot는 SpringSecurity를 ​​통합

종속성 추가

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
로그인 후 복사

Spring Security 구성

# 设置默认用户
spring.security.user.name=user
spring.security.user.password=pass

# 关闭CSRF保护
spring.security.csrf.enabled=false
로그인 후 복사

보안 구성 클래스 작성. Spring Security를 ​​구성하기 위한 보안 구성 클래스를 작성합니다. 이 클래스는 WebSecurityConfigurerAdapter를 확장하고 보안을 구성하기 위한 일부 메서드를 재정의해야 합니다.

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    // 配置用户信息
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("user").password("{noop}pass").roles("USER");
    }
    
    // 配置HTTP请求安全性
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/public/**").permitAll() // 允许/public/**路径下的所有请求
            .anyRequest().authenticated() // 所有其他请求都需要身份验证
            .and()
            .formLogin() // 启用表单登录
            .loginPage("/login") // 指定登录页面
            .defaultSuccessUrl("/", true) // 登录成功后重定向到主页
            .permitAll() // 允许所有用户访问登录页面
            .and()
            .logout() // 启用注销
            .logoutUrl("/logout") // 注销URL
            .logoutSuccessUrl("/login") // 注销成功后重定向到登录页面
            .permitAll(); // 允许所有用户注销
    }
}
로그인 후 복사

위 구성에서는 메모리 내 인증(사용자 이름과 비밀번호 사용)과 HTTP 요청 보안(특정 경로에서 요청을 허용하고, 다른 모든 요청에 ​​대해 인증을 요구하고, 양식 로그인 및 로그아웃을 설정)을 구성했습니다.

컨트롤러를 작성하세요. 마지막으로 로그인 및 로그아웃 요청을 처리하는 컨트롤러를 작성해야 합니다.

@Controller
public class LoginController {
    
    // 处理登录请求
    @GetMapping("/login")
    public String login() {
        return "login";
    }
    
    // 处理注销请求
    @PostMapping("/logout")
    public String logout() {
        return "redirect:/login?logout=true";
    }
}
로그인 후 복사

로그인 페이지 요청을 처리하고 login이라는 템플릿을 반환하기 위해 코드에 login()이라는 메서드를 정의합니다. logout() 메소드는 로그아웃 요청을 처리하고 로그인 페이지로 리디렉션하는 데 사용됩니다.

HTML 템플릿 작성. 마지막으로 로그인 페이지를 렌더링하려면 login.html이라는 템플릿을 작성해야 합니다.

아아아아

위 내용은 SpringBoot가 SpringSecurity를 ​​신속하게 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿