SpringBoot&Spring Security 初步

326

简介

  • Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入spring-boot-starter-security模块,进行少量的配置,即可实现强大的安全管理!
  • 记住几个类:
  • WebSecurityConfigurerAdapter:自定义Security策略
  • AuthenticationManagerBuilder:自定义认证策略。
  • @EnableWebSecurity:开启WebSecurity模式
  • Spring Security的两个主要目标是“认证"和“授权”(访问控制)。
    “认证”(Authentication)
    “授权”(Authorization)
    这个概念是通用的,而不是只在Spring Security中存在。

样例

@EnableWebSecurity//开启
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    //给请求授权,给予不同的角色,不同的角色可以访问的链接不同
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/").permitAll()
                .antMatchers("/level1/**").hasRole("vip1")
                .antMatchers("/level2/**").hasRole("vip2")
                .antMatchers("/level3/**").hasRole("vip3");
                //定制首页,去首页的请求
        //无权访问的自动跳到登录页面,是Spring Security自带的,不是自定义的
        //默认的用户名是user,密码在控制台
        http.formLogin().loginPage("/toLogin");
        http.csrf().disable();
        http.logout().logoutSuccessUrl("/");
        //cookie,存在remember中
        http.rememberMe().rememberMeParameter("remember");
        

    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        //认证管理器
        //从内存中获取相应的认证
        /*
        给不同的用户赋予不同的角色,
        密码需要编码
        这里的账号密码是Spring Security的,不是自定义的
        不同的用户用and()方法连接
         */
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                .withUser("admin")
                .password(new BCryptPasswordEncoder().encode("123456"))
                .roles("vip1")
                .and()
                .withUser("root")
                .password(new BCryptPasswordEncoder().encode("123456"))
                .roles("vip1","vip2","vip3");
    }
}

image.png