ApiBoot零代码整合Spring Security的JDBC方式获取AccessToken

ApiBoot Security内部提供了两种方式进行读取须要认证的用户信息,在以前的文章中讲到过ApiBoot Security使用内存方式(memory)不写一行代码就能够实现用户的认证并获取AccessToken,那咱们使用JDBC方式是否是也是这么的简单呢?html

若是你还对ApiBoot不了解,能够经过如下的途径来获取帮助。java

ApiBoot Security的认证方式

有一些同窗可能对ApiBoot Security的两种认证方式还不太了解,下面介绍下这两种认证方式的区别。mysql

内存方式

内存方式(memory)是将用户信息(用户名、密码、角色列表)在application.yml文件内配置,可配置多个用户,项目启动后将用户信息加载到内存中,用于获取AccessToken时的认证。git

数据库方式

数据库方式(jdbc)是将用户信息保存到数据库内,ApiBoot Security定义了一个默认表结构的用户信息数据表,咱们能够从官网找到建表语句直接在本身的数据库内建立便可,固然若是不使用默认的表结构能够进行自定义读取用户信息。web

注意:在数据库内存放用户的密码必须是经过BCryptPasswordEncoder加密后的密文字符串。spring

建立项目

ApiBoot Security的两种认证方式概念明白后,咱们开始说下怎么才能使用JDBC方式进行用户认证,咱们先来使用IDEA开发工具建立一个SpringBoot项目。sql

添加ApiBoot统一版本

在使用ApiBoot内提供的组件依赖时,首先咱们须要在pom.xml文件内添加ApiBoot统一版本,以下所示:数据库

<properties>
    <java.version>1.8</java.version>
    <!--ApiBoot版本号-->
    <apiboot.version>2.1.5.RELEASE</apiboot.version>
</properties>
<dependencyManagement>
    <dependencies>
        <!--ApiBoot版本依赖-->
        <dependency>
            <groupId>org.minbox.framework</groupId>
            <artifactId>api-boot-dependencies</artifactId>
            <version>${apiboot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>复制代码

添加ApiBoot Security依赖

在项目pom.xml文件添加ApiBoot Security依赖,以下所示:api

<!--ApiBoot Security OAuth-->
<dependency>
  <groupId>org.minbox.framework</groupId>
  <artifactId>api-boot-starter-security-oauth-jwt</artifactId>
</dependency>复制代码

添加JDBC相关依赖

咱们本章使用MySQL数据库作演示,咱们须要添加相关的数据库依赖以及数据库链接池依赖,因为ApiBoot Security读取内置的默认用户表结构使用的是DataSource,因此咱们还须要添加一个能够实例化DataSource的依赖,能够选择api-boot-starter-mybatis-enhance或者spring-boot-starter-jdbc,在pom.xml添加依赖以下所示:mybatis

<!--SpringBoot Web-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--MySQL-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

<!--Hikari-->
<dependency>
  <groupId>com.zaxxer</groupId>
  <artifactId>HikariCP</artifactId>
</dependency>
<!--SpringBoot JDBC-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>复制代码

注意:spring-boot-starter-web这个依赖不可少,在ApiBoot AutoConfiguration内须要一些Web的依赖类。

建立默认用户表结构

本章使用ApiBoot Security提供的默认用户表结构,访问官方文档查看3.3 使用内置表结构的用户,将建表语句在本身数据库内执行建立表信息,建立后添加一条用户信息,以下所示:

INSERT INTO `api_boot_user_info` VALUES (1,'admin','昵称','$2a$10$RbJGpi.v3PwkjrYENzOzTuMxazuanX3Qa2hwI/f55cYsZhFT/nX3.',NULL,NULL,NULL,'N','Y','O','2019-11-29 06:14:44');复制代码

配置数据源

依赖添加完成后咱们在application.yml配置文件内进行配置数据源,以下所示:

spring:
  application:
    name: apiboot-security-customize-select-user
  # 数据源配置
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
server:
  port: 9090复制代码

配置ApiBootSecurity JDBC方式

因为ApiBoot Security默认使用memory用户认证读取方式,咱们须要在application.yml文件内进行修改,以下所示:

# ApiBoot相关配置
api:
  boot:
    # 启用ApiBoot Security 的JDBC方式
    security:
      away: jdbc复制代码

运行测试

项目配置完成,下面咱们经过XxxApplication方式启动项目。

在获取AccessToken以前咱们要知道的一点,ApiBoot Security内部默认集成了OAuth2,并且还默认配置了clientIdclientSecret客户端基本信息,默认值分别是ApiBootApiBootSecret

clientId = ApiBoot
clientSecret = ApiBootSecret复制代码

若是你对ApiBoot OAuth其余功能有兴趣能够查看ApiBoot OAuth文档了解详情。

获取AccessToken

因为学习者的本机环境不一样,下面采用两种方式进行获取AccessToken

CURL方式

执行以下命令获取AccessToken

➜ ~ curl -X POST ApiBoot:ApiBootSecret@localhost:9090/oauth/token\?grant_type\=password\&username\=admin\&password\=123456
{"access_token":"d9cb97ee-d1bf-42e1-a7a0-c1002df48c52","token_type":"bearer","refresh_token":"db9e9d52-cbe3-4379-a5f2-ffaa34681c01","expires_in":2884,"scope":"api"}复制代码

PostMan方式

注意:获取AccessToken的请求方式为POST.

敲黑板,划重点

ApiBoot Security不只内存方式能够实现零代码的方式进行集成Spring SecurityOAuth2JDBC方式一样也能够,不过要根据ApiBoot的约定建立用户表。

代码示例

本篇文章示例源码能够经过如下途径获取,目录为SpringBoot2.x/apiboot-security-customize-select-user

做者我的 博客

使用开源框架 ApiBoot 助你成为Api接口服务架构师

相关文章
相关标签/搜索