• springboot security


    什么是springboot security

    Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型。他可以实现强大的web安全控制。对于安全控制,
    我们仅需引入spring-boot-starter-security模块,进行少量的配置,即可实现强大的安全管理。
     
    工作流程

    WebSecurityConfigurerAdapter:自定义Security策略

    AuthenticationManagerBuilder:自定义认证策略

    @EnableWebSecurity:开启WebSecurity模式

    WEB&安全

    1. 登陆/注销

      HttpSecurity配置登陆、注销功能

    2. Thymeleaf提供的SpringSecurity标签支持

      需要引入thymeleaf-extras-springsecurity4

      sec:authentication=“name”获得当前用户的用户名

      sec:authorize=“hasRole(‘ADMIN’)”当前用户必须拥有ADMIN权限时才会显示标签内容

    3. remember me

      表单添加remember-me的checkbox

      配置启用remember-me功能

    4. CSRF(Cross-site request forgery)跨站请求伪造

      HttpSecurity启用csrf功能,会为表单添加_csrf的值,提交携带来预防CSRF;

      实例代码

      安全配置类
      @EnableWebSecurity
      public class MySecurityConfig extends WebSecurityConfigurerAdapter {
      
          @Override
          protected void configure(HttpSecurity http) throws Exception {
              //super.configure(http);
              //定制请求的授权规则
              http.authorizeRequests().antMatchers("/").permitAll()
                      .antMatchers("/level1/**").hasRole("VIP1")
                      .antMatchers("/level2/**").hasRole("VIP2")
                      .antMatchers("/level3/**").hasRole("VIP3");
      
              //开启自动配置的登陆功能,效果,如果没有登陆,没有权限就会来到登陆页面
              http.formLogin().usernameParameter("user").passwordParameter("pwd").loginPage("/userlogin");
              //1、 /login 来到登陆页
              //2、重定向到/login?error表示登陆失败
              //3、更多详细功能
              //4、默认post形式的 /login 代表处理登陆
              //5、一旦定制loginPage  那么 loginPage的post请求就是登陆
      
      
              //开启自动配置的注销功能
              http.logout().logoutSuccessUrl("/"); //注销成功以后来到首页
              //1、访问/logout 表示用户注销。清空 session
              //2、注销成功会返回 /login?logout 页面
              //3、默认post形式的 /login代表处理登陆
      
      
              //开启记住我功能
              http.rememberMe().rememberMeParameter("remeber");
              //登陆成功以后,将cookie发给浏览器保存,以后访问页面带上这个cookie,只要通过检查就可以免登陆
              //点击注销会删除cookie
          }
      
          //定义认证规则
          @Override
          protected void configure(AuthenticationManagerBuilder auth) throws Exception {
              //super.configure(auth);
      
              //auth.jdbcAuthentication()...
              auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())   //在Spring Security 5.0中新增了多种加密方式,页改变了密码的格式
                      .withUser("zhangsan").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP1", "VIP2")
                      .and()
                      .withUser("lisi").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP2", "VIP3")
                      .and()
                      .withUser("wangwu").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP1", "VIP3");
          }
      }
      
      启动类:
      /**
       * 1、引入SpringSecurity;
       * 2、编写SpringSecurity配置
       *       @EnableWebSecurity extends WebSecurityConfigurerAdapter
       * 3、控制请求的访问权限
       *
       */
      @SpringBootApplication
      public class SecurityApplication {
      
       public static void main(String[] args) {
           SpringApplication.run(SecurityApplication.class, args);
       }
      
      }






  • 相关阅读:
    FastDFS
    目前存在的问题
    MongoDB JAVA开发
    [Linux] Hexo 搭建个人博客
    新目标
    1年之后的拿高工资的资本,Java线程
    Oracle在VMware虚拟机安装的配置
    adb命令关闭打开手机wifi开关
    ADB命令横竖屏切换、关闭打开wifi
    使用adb命令提取安卓手机中安装的apk
  • 原文地址:https://www.cnblogs.com/Soul-xs/p/12237305.html
Copyright © 2020-2023  润新知