一、介绍
-
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