springsecurity简介

44 阅读1分钟

springsecurity简介

一级目录

springsecurity的核心就是认证和授权,其本质就是一组链式的过滤器,用户发送请求进来,判断有没有请求的权限。

简单配置

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
            //以下五步是表单登录进行身份认证最简单的登陆环境
            http.formLogin() //表单登陆 1
                .and() //2
                .authorizeRequests() //下面的都是授权的配置 3
                .anyRequest() //任何请求 4
                .authenticated(); //访问任何资源都需要身份认证 5


    }
}

启动项目可以看到下面的登陆页面,用户名默认user,密码在控制台输出
在这里插入图片描述
当然,security还可以自定义登陆页面并从数据库获取用户

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
      /**
     * 介绍
     *  springboot2.x引入的security版本是5.x的,这个版本需要提供一个PasswordEncoder实例,不然就会报错
     * @return
     */
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
            //以下五步是表单登录进行身份认证最简单的登陆环境
            http.formLogin() //表单登陆 1
                    .loginPage("/login.html") //指定登陆页面
                .and() //2
                .authorizeRequests() //下面的都是授权的配置 3
                    .antMatchers("/login.html").permitAll()//访问此地址就不需要进行身份认证了,防止重定向死循环
                .anyRequest() //任何请求 4
                .authenticated(); //访问任何资源都需要身份认证 5
    }
}

如果要实现查询数据库,就要实现UserDetailsService类,添加自己的配置,并且在serviceImpl层通过UsernamePasswordAuthenticationToken,提交用户名和密码到UserDetailsService,在UserDetailsServiceImpl中查询数据库即可。

UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userName, password);
        Authentication authenticate = authenticationManager.authenticate(authenticationToken);