跳到主要内容

第一个ApiBoot应用程序

我们使用ApiBoot提供的整合Spring SecuritySpring OAuth2的组件来搭建第一个应用程序。

1. 创建项目

我们首先使用IDEA工具来创建一个SpringBoot项目,当然用什么工具都是可以的。

提示

创建的项目基于JDK8版本,如果是JDK11及以上版本则会出现JAXBException异常,可以添加相关依赖解决这个异常。

1.1 添加组件依赖

pom.xml
//...省略无关的依赖
<dependencies>
<dependency>
<groupId>org.minbox.framework</groupId>
<artifactId>api-boot-starter-security-oauth-jwt</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.minbox.framework</groupId>
<artifactId>api-boot-dependencies</artifactId>
<version>2.3.8</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>

Maven仓库最新版本:

提示

上面使用了ApiBoot v2.3.8版本,一旦添加了统一版本依赖后,使用dependency就需要再定义<version>标签了。

1.2 参数配置

添加依赖后我们需要在application.yml文件中配置下Spring Security的用户信息,如下所示:

src/resources/application.yml
spring:
main:
allow-circular-references: true
api:
boot:
security:
users:
- username: hengboy
password: 123123
提示

由于高版本的Spring检查了循环依赖的问题,我们需要额外添加spring.main.allow-circular-references=true的配置。

2. 示例

到目前为止我们的项目已经实现了集成Spring SecuritySpring OAuth2,一个依赖、极简的配置就解决了问题,这样的ApiBoot你感觉上手简单吗?

2.1 获取令牌

curl方式:

> ~ curl -X POST ApiBoot:ApiBootSecret@localhost:8080/oauth/token -d "grant_type=password&username=hengboy&password=123123" | jsonpp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 198 0 146 100 52 891 317 --:--:-- --:--:-- --:--:-- 1269
{
"access_token": "eyHWEBXAKrNBMewKeLAMFwlLvlc",
"token_type": "bearer",
"refresh_token": "CipCv5R-zARK994lSP3wIZU5AeA",
"expires_in": 7185,
"scope": "api"
}
提示

ApiBoot Security OAuth2默认使用内存方式存储令牌,应用程序一旦重启就会失效,需要重新获取新令牌。

2.2 测试接口

首先我们先来添加一个测试接口,地址为:/api/index,为了方便我直接在ApiBootFirstApplication入口类添加,如下所示:

ApiBootFirstApplication.java
@SpringBootApplication
@RestController
public class ApiBootFirstApplication {

public static void main(String[] args) {
SpringApplication.run(ApiBootFirstApplication.class, args);
}


@GetMapping("/api/index")
public String index() {
return "this is security index";
}
}
提示

ApiBoot Security OAuth2默认保护/api/**地址下的接口,可以通过api.boot.security.authPrefix配置参数修改。

2.3 携带令牌请求接口

curl方式:

> ~ curl -H 'Authorization: Bearer JyzexbKNAeiz6oiorFYGTwdCI64' http://localhost:8080/api/index
this is security index

我们已经可以使用生成的请求令牌访问访问受保护的接口了。