SpringBoot 2.1.1 + SpringSecurity+jwt 去掉Token验证

SpringBoot 2.1.1 + SpringSecurity+jwt 实现无Token验证

记录一下使用springSecurity实现jwt的授权,并对去掉鉴权认证

  • 工程创建流程
    • SecurityConfig
    • AuthenticationEntryPointImpl 和 JwtAuthenticationEntryPoint
    • JwtAuthenticationTokenFilter
    • 配置 Security信息
    • 启动类的信息

环境

  • springBoot 2.1.1
  • springSecurity 5.1.2
  • jjwt 0.9.0

pox.xml 文件主要信息



   org.springframework.boot
   spring-boot-starter-security
      

   io.jsonwebtoken
   jjwt
   ${jwt.version}

项目结构:

SpringBoot 2.1.1 + SpringSecurity+jwt 去掉Token验证_第1张图片

修改

 spring security配置
SecurityConfig 类设置

这一个类主要设置那一些目录需要进行权限验证,其中包括登录页面、静态文件等信息不需要验证。具体过滤代码如下:

  protected void configure(HttpSecurity httpSecurity) throws Exception
    {
        httpSecurity
                // CRSF禁用,因为不使用session
                .csrf().disable()
                // 认证失败处理类
                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
                // 基于token,所以不需要session
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                // 过滤请求
                .authorizeRequests()
                // 对于登录login 验证码captchaImage 允许匿名访问
                .antMatchers("/login").anonymous()
                .antMatchers(
                        HttpMethod.GET,
                        "/*.html",
                        "/**/*.html",
                        "/**/*.css",
                        "/**/*.js"
                ).permitAll()
                .antMatchers("/**").anonymous() //关键新增这一行即可
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated()
                .and()
                .headers().frameOptions().disable();
        httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
        // 添加JWT filter
        httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
    }

以上方法是在java中去掉所有接口带Token认证,在实际生产环境中我们肯定是不会设置的。

 

你可能感兴趣的:(java架构师视频,java,java,spring,boot,jwt)