欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot面试之集成springsecurity

程序员文章站 2024-03-21 23:01:58
...

首先引入springsecurity的起步依赖:

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

然后实现抽象类org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter进行相关的配置,如下是一个可能的实现:

@Configuration
public class CustomLoginSecurityConfig extends WebSecurityConfigurerAdapter {
    // 配置http的访问控制
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 允许访问/, /home
        http.authorizeRequests().antMatchers("/", "/home")
                // 所有其他请求都需要认证,即登录
                .permitAll().anyRequest().authenticated()
                .and()
                // 配置/login为登录地址,并允许所有人访问该地址
                .formLogin().loginPage("/login").permitAll()
                .and()
                // 使用默认的退出登录页面,并允许所有人访问
                .logout().permitAll();
    }

    // 配置认证授权使用的用户和角色
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                // 不加改行设置密码编码器会报错
                .passwordEncoder(NoOpPasswordEncoder.getInstance())
                .withUser("user")
                .password("user")
                .roles("USER");
    }
}