SpringBoot整合Spring Security

本文介绍了如何在SpringBoot项目中整合Spring Security,提供安全访问控制。通过RBAC机制设置接口权限,防止恶意请求。详细步骤包括:框架整合、业务整合、认证授权配置以及自定义认证授权方式,特别针对接口请求保护进行了深入讲解。
摘要由CSDN通过智能技术生成

一、介绍

  • Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI和AOP功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

    在开发业务接口时,为保护无需登录授权即可以直接用get、post请求的接口受到恶意请求,可以通过RBAC机制设置接口请求访问权限。

    以下将使用SpringBoot整合Spring Security,并提供适合微信业务接口开发的请求保护案例。

二、框架整合

  • 1、下载springboot的空项目,参考 http://start.spring.io/

  • 2、引入pom依赖,这里同时将引入JPA依赖,将权限表同业务表分离;

     <!-- spring security -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-security</artifactId>
     </dependency>
     
     <!-- JPA -->
     <dependency>
     	<groupId>org.springframework.boot</groupId>
     	<artifactId>spring-boot-starter-data-jpa</artifactId>
     </dependency>
    
  • 3、在application.properties中添加JPA的配置参数;

     #启动时会根据实体类生成数据表,或者更新表结构,不清空数据,开发阶段使用;validate:表结构稳定后使用,可用于正式环境;
     spring.jpa.hibernate.ddl-auto=update
     #控制台打印sql
     spring.jpa.show-sql=true
     #让控制器输出的json格式更美观
     spring.jackson.serialization.indent-output=true
    

三、业务整合

  • 1、概念介绍

    http://blog.csdn.net/shehun1/article/details/45394405

  • 2、建立业务表,以微信项目接口为例,用户登录时服务端将获取用户的openid,Spring Security将用户的openid作为认证授权的账号和密码,同时业务表将实现UserDetails接口,作为Spring
    Security认证授权提供认证授权逻辑。因此业务表如下:

     import java.util.ArrayList;
     import java.util.Collection;
     import java.util.List;
     import java.util.Objects;
     
     import javax.persistence.Column;
     import javax.persistence.Entity;
     import javax.persistence.GeneratedValue;
     import javax.persistence.GenerationType;
     import javax.persistence.Id;
     import javax.persistence.Table;
     
     import org.springframework.security.core.GrantedAuthority;
     import org.springframework.security.core.authority.SimpleGrantedAuthority;
     import org.springframework.security.core.userdetails.UserDetails;
     
     /**
      * @author xiaojin_wu
      * @email wuxiaojin258@126.com
      * @date 2018年3月6日
      * @description 
      * 		spring security认证授权表,以openid为认证授权账号密码
      * 		jpa类加载时自动建表
      */
     @Entity
     @Table(name = "customer")
     public class Customer implements UserDetails {
     
     	private st
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值