springboot整合spring-security登录认证,复制就能用

springboot使用spring-security登录认证完整代码,一步一步来,复制就能用,别看那么长就放弃。

 

解决方法:

1.创建核心配置类,整合spring security

@Configurable

@EnableWebSecurity

public class WebSpringSecurityConfig extends WebSecurityConfigurerAdapter {

 

   @Value("${survey.openUrl}")

   private String openUrl;

 

   @Value("${survey.authenticationUrl}")

   private String authenticationUrl;

 

   @Autowired

   @Qualifier("survetRememberMeService")

   RememberMeServices rememberMeServices;

   @Autowired

  private SimpleAuthenticationProvider simpleAuthenticationProvider;

 

   @Override

   protected void configure(HttpSecurity http) throws Exception {

       List<String> openUrlList=new ArrayList<String>();

       if (!openUrl.isEmpty()){

           for(String s:openUrl.split(",")){

               openUrlList.add(s);

           }

       }

       List<String> authenticationUrllList=new ArrayList<String>();

       if (!authenticationUrl.isEmpty()){

           for(String s:authenticationUrl.split(",")){

               authenticationUrllList.add(s);

           }

       }

     

       http.cors().and().csrf().disable().exceptionHandling()

               .authenticationEntryPoint(new UnauthorizedEntryPoint())

               .and().headers()

               .frameOptions().disable().and().authorizeRequests()

               .antMatchers(authenticationUrllList.toArray(new String[0])).hasAnyRole("NORMAL","SUPERADMIN")//这里要注意了SUPERADMIN指的是数据库存的用户角色是ROLE_SUPERADMIN

               .antMatchers(openUrlList.toArray(new String[0])).permitAll()//匹配到的路径不需要验证

               .antMatchers("/api/login").permitAll()

               .anyRequest().authenticated()

               .and()

               .formLogin()

               .usernameParameter("userName").passwordParameter("password")

               .loginProcessingUrl("/api/login")

               .successHandler(new AjaxAuthSuccessHandler())

               .failureHandler(new AjaxAuthFailHandler())

               .and()

               .logout()

               .logoutUrl("/api/logout").logoutSuccessHandler(new AjaxLogoutSuccessHandler()).and().rememberMe().rememberMeServices(rememberMeServices);

 

   }

 

   @Autowired

   public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

       super.configure(auth);

       auth.authenticationProvider(simpleAuthenticationProvider);

   }

 

}

 

2.UnauthorizedEntryPoint、AjaxAuthSuccessHandler、AjaxAuthFailHandler、AjaxLogoutSuccessHandler和SimpleAuthenticationProvider类源码可参考:http://www.yayihouse.com/yayishuwu/chapter/2848

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值