springboot整合spring-security实现认证授权

1.认证授权数据库中的五张表并使用mybatisplus一一映射。

2.使用代码生成器生成生成对应的dao层、service层、impl、domain。

3.实现userDetails接口;SpringSecurity用户的实体;重写方法。

4.生成token的工具类。

5、jwt配置类。

6、统一返回结果result

7、各种登录登出返回结果处理。

8、其中登陆成功要进行token的生成。

9、实现userDetailsService接口。根据用户名查询详细的用户信息。

10、编写自定义登录验证。(springsecurity的核心业务处理功能) UserAuthenticationProvider implements AuthenticationProvider
      最后返回:return new UsernamePasswordAuthenticationToken(userInfo, password, authorities);

11、编写自定义权限注解验证(实现PermissionEvaluator接口)

12、编写JWT接口请求校验拦截器(extends BasicAuthenticationFilter);
      带token的请求和不带token的请求,返回不同结果,带token的请求要验证token的正确性。

13、编写最最最重要的spring-security核心配置类。
        继承 WebSecurityConfigurerAdapter  
        重写configure(AuthenticationManagerBuilder auth) 配置自定义的登录认证逻辑。返回8中自定义登录验证的逻辑。
        重写configure(HttpSecurity http)  配置 security的控制逻辑。

 authorizeRequests().antMatchers(JWTConfig.antMatchers.split(",")).permitAll()   // 不进行权限验证的请求或资源(从配置文件中读取)        .anyRequest().authenticated() //其他的所有路径都需要进行认证授权。                .and()                // 配置未登录自定义处理类                .httpBasic().authenticationEntryPoint(userAuthenticationEntryPointHandler)                .and()                // 配置登录地址                .formLogin()                .loginProcessingUrl("/login/userLogin")                // 配置登录成功自定义处理类                .successHandler(userLoginSuccessHandler)                // 配置登录失败自定义处理类                .failureHandler(userLoginFailureHandler)                .and()                // 配置登出地址                .logout()                .logoutUrl("/login/userLogout")                // 配置用户登出自定义处理类                .logoutSuccessHandler(userLogoutSuccessHandler)                .and()                // 配置没有权限自定义处理类                .exceptionHandling().accessDeniedHandler(userAuthAccessDeniedHandler)                .and()                // 开启跨域                .cors()                .and()                // 取消跨站请求伪造防护                .csrf().disable();        // 基于Token不需要session        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);        // 禁用缓存        http.headers().cacheControl();        // 添加JWT过滤器        http.addFilter(new JWTAuthenticationTokenFilter(authenticationManager()));

来源:https://www.icode9.com/content-4-763451.html

(0)

相关推荐