最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

3行代碼快速實(shí)現(xiàn)Spring Boot Oauth2服務(wù)功能

 更新時(shí)間:2018年04月24日 11:18:38   作者:五毛程序員  
oauthserver是一個(gè)基于Spring Boot Oauth2的完整的獨(dú)立的Oauth服務(wù)器。僅僅需要?jiǎng)?chuàng)建相關(guān)數(shù)據(jù)表,修改數(shù)據(jù)庫(kù)的連接信息,你就可以得到一個(gè)Oauth服務(wù)器。這篇文章給大家介紹3行代碼快速實(shí)現(xiàn)Spring Boot Oauth2服務(wù)功能,需要的朋友參考下吧

這里的3行代碼并不是指真的只需要寫(xiě)3行代碼,而是基于我已經(jīng)寫(xiě)好的一個(gè)Spring Boot Oauth2服務(wù)。僅僅需要修改3行數(shù)據(jù)庫(kù)配置信息,即可得到一個(gè)Spring Boot Oauth2服務(wù)。

項(xiàng)目地址https://github.com/jeesun/oauthserver

oauthserver

簡(jiǎn)介

oauthserver是一個(gè)基于Spring Boot Oauth2的完整的獨(dú)立的Oauth服務(wù)器。僅僅需要?jiǎng)?chuàng)建相關(guān)數(shù)據(jù)表,修改數(shù)據(jù)庫(kù)的連接信息,你就可以得到一個(gè)Oauth服務(wù)器。

支持的關(guān)系型數(shù)據(jù)庫(kù):

  • PostgreSQL
  • MySQL

已實(shí)現(xiàn)的功能:

  1. 集成Spring Boot Oauth2,實(shí)現(xiàn)Oauth服務(wù);
  2. token保存到關(guān)系型數(shù)據(jù)庫(kù);
  3. 日志記錄保存到文件,并按日歸檔;
  4. 數(shù)據(jù)庫(kù)連接信息加密;
  5. 集成Druid數(shù)據(jù)庫(kù)連接池。

使用流程

1. 建表

PostgreSQL

請(qǐng)執(zhí)行src/main/resources/schema-pg.sql,完成數(shù)據(jù)表的創(chuàng)建和測(cè)試數(shù)據(jù)的導(dǎo)入。

MySQL

請(qǐng)執(zhí)行src/main/resources/schema-mysql.sql,完成數(shù)據(jù)表的創(chuàng)建和測(cè)試數(shù)據(jù)的導(dǎo)入。

2. 修改數(shù)據(jù)庫(kù)連接信息

在application.yml中,配置著數(shù)據(jù)庫(kù)的連接信息。其中,配置項(xiàng)username和password是要經(jīng)過(guò)jasypt加密的,不能直接填明文。加密密鑰由jasypt.encryptor.password配置。你需要使用test目錄下的UtilTests工具得到加密字符串。

PostgreSQL
# PostgreSQL連接信息
  driver-class-name: org.postgresql.Driver
  url: jdbc:postgresql://127.0.0.1:5432/thymelte?useUnicode=true&characterEncoding=UTF-8
  username: ENC(hTpbG9fq+7P3SntmXuNtDxbtWDqRuPV+)
  password: ENC(abdq6LyOspryFQHCqzEMTxRozyJVjIA4)
MySQL
# MySQL連接信息
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
  username: ENC(YiYjVwTulDGN//YaB3KbuA==)
  password: ENC(9oaIJkFgGSDFaHH3OXY63RHWQ+amDmiJ)

3. 運(yùn)行

現(xiàn)在,一切已準(zhǔn)備就緒。運(yùn)行項(xiàng)目,當(dāng)程序成功啟動(dòng)時(shí),即表明你已配置成功。

4. 測(cè)試

在建表時(shí),我已經(jīng)向表添加了測(cè)試數(shù)據(jù)。以下請(qǐng)求參數(shù)的值,均是測(cè)試數(shù)據(jù),在數(shù)據(jù)表中可以找得到。請(qǐng)根據(jù)需求到數(shù)據(jù)表中修改對(duì)應(yīng)的值。

在表oauth_client_details表中,已有一條測(cè)試數(shù)據(jù)。列client_id和client_secret的值,分別對(duì)應(yīng)Basic Oauth的請(qǐng)求參數(shù)username和password的值。而列access_token_validity和列refresh_token_validity,分別代表access_token和refresh_token的有效期時(shí)間,以秒為單位。測(cè)試數(shù)據(jù)7200和5184000,分別代表2個(gè)小時(shí)和2個(gè)月(60天)。這是一個(gè)比較合理的有效期時(shí)間的設(shè)置,可以參考。

token相關(guān)的接口,都需要進(jìn)行Basic Oauth認(rèn)證。

1、根據(jù)用戶(hù)名和密碼獲取access_token

POST http://localhost:8182/oauth/token?grant_type=password&username=jeesun&password=1234567890c

成功示例:

{
  "access_token": "ca582cd1-be6c-4a5a-82ec-10af7a8e06eb",
  "token_type": "bearer",
  "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487",
  "expires_in": 3824,
  "scope": "read write trust"
}

失敗示例(用戶(hù)名或者密碼錯(cuò)誤)

{
  "error": "invalid_grant",
  "error_description": "Bad credentials"
}

2、檢查access_token

GET http://localhost:8182/oauth/check_token?token=ca582cd1-be6c-4a5a-82ec-10af7a8e06eb

成功示例

{
  "aud": [
    "oauth2-resource"
  ],
  "exp": 1524507296,
  "user_name": "jeesun",
  "authorities": [
    "ROLE_ADMIN",
    "ROLE_USER"
  ],
  "client_id": "clientIdPassword",
  "scope": [
    "read",
    "write",
    "trust"
  ]
}

失敗示例(access_token已過(guò)期)

{
  "error": "invalid_token",
  "error_description": "Token was not recognised"
}

3、根據(jù)refresh_token獲取新的access_token

POST http://localhost:8182/oauth/token?grant_type=refresh_token&refresh_token=c24a6143-97c8-4642-88b9-d5c5b902b487

成功示例

{
  "access_token": "690ecd7d-f2b7-4faa-ac45-5b7a319478e8",
  "token_type": "bearer",
  "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487",
  "expires_in": 7199,
  "scope": "read write trust"
}

app實(shí)踐指南

app獲取到token信息后,需要保存token信息和請(qǐng)求時(shí)間。在傳access_token之前,需要檢查access_token是否過(guò)期。為了減少后臺(tái)壓力,檢查access_token是否過(guò)期應(yīng)該是在app本地完成。通過(guò)token的keyexpires_in(剩余有效期)的值,以及本地記錄的請(qǐng)求時(shí)間,和當(dāng)前時(shí)間做對(duì)比,可以很方便地判斷出access_token是否過(guò)期。如果過(guò)期了,需要通過(guò)refresh_token獲取新的access_token。因?yàn)閍ccess_token的有效期只有2個(gè)小時(shí),這個(gè)驗(yàn)證是必須的。refresh_token同理。

總結(jié)

以上所述是小編給大家介紹的3行代碼快速實(shí)現(xiàn)Spring Boot Oauth2服務(wù),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 利用JavaFX工具構(gòu)建Reactive系統(tǒng)

    利用JavaFX工具構(gòu)建Reactive系統(tǒng)

    這篇文章主要介紹了使用JavaFX構(gòu)建Reactive系統(tǒng),利用JavaFX工具集中的新的超棒特性來(lái)構(gòu)建響應(yīng)式的快速應(yīng)用程序,感興趣的小伙伴們可以參考一下
    2016-02-02
  • java隊(duì)列中Queue與Deque的區(qū)別面試精講

    java隊(duì)列中Queue與Deque的區(qū)別面試精講

    這篇文章主要為大家介紹了java隊(duì)列中Queue與Deque的區(qū)別面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • springmvc模式的上傳和下載實(shí)現(xiàn)解析

    springmvc模式的上傳和下載實(shí)現(xiàn)解析

    這篇文章主要介紹了springmvc模式下的上傳和下載實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java如何獲取本地操作系統(tǒng)進(jìn)程列表

    java如何獲取本地操作系統(tǒng)進(jìn)程列表

    本文介紹了java中是如何獲取當(dāng)前本地操作系統(tǒng)正在運(yùn)行的系統(tǒng)進(jìn)程的信息,需要的朋友可以參考下
    2015-07-07
  • Java中的System.arraycopy()淺復(fù)制方法詳解

    Java中的System.arraycopy()淺復(fù)制方法詳解

    這篇文章主要介紹了Java中的System.arraycopy()淺復(fù)制方法詳解,Java數(shù)組的復(fù)制操作可以分為深度復(fù)制和淺度復(fù)制,簡(jiǎn)單來(lái)說(shuō)深度復(fù)制,可以將對(duì)象的值和對(duì)象的內(nèi)容復(fù)制;淺復(fù)制是指對(duì)對(duì)象引用的復(fù)制,需要的朋友可以參考下
    2023-11-11
  • MyBatis-Plus基于MyBatis封裝 BaseMapper的流程步驟

    MyBatis-Plus基于MyBatis封裝 BaseMapper的流程步驟

    MyBatis-Plus作為 MyBatis 的增強(qiáng)框架,通過(guò) BaseMapper 提供了通用的 CRUD 操作,極大地提升了開(kāi)發(fā)效率,為了更透徹地理解其封裝機(jī)制,本文將采用鏈路追蹤的思維,從開(kāi)發(fā)者調(diào)用接口開(kāi)始,分析其如何基于 MyBatis 完成對(duì) BaseMapper 的封裝,需要的朋友可以參考下
    2025-04-04
  • SpringCloud使用Ribbon實(shí)現(xiàn)負(fù)載均衡的流程步驟

    SpringCloud使用Ribbon實(shí)現(xiàn)負(fù)載均衡的流程步驟

    在微服務(wù)架構(gòu)中,負(fù)載均衡是一項(xiàng)關(guān)鍵的技術(shù),它可以確保各個(gè)服務(wù)節(jié)點(diǎn)間的負(fù)載分布均勻,提高整個(gè)系統(tǒng)的穩(wěn)定性和性能,Spring Cloud 中的 Ribbon 就是一種負(fù)載均衡的解決方案,本文將深入探討 Ribbon 的原理和在微服務(wù)中的應(yīng)用,需要的朋友可以參考下
    2024-02-02
  • Spring Batch 入門(mén)示例

    Spring Batch 入門(mén)示例

    本文將向您展示如何使用Spring Boot創(chuàng)建一個(gè)的Spring Batch的Hello World示例。對(duì)和我一樣入門(mén)的有一定的幫助,感興趣的小伙伴們可以參考一下
    2021-06-06
  • mybatis中#{}和${}的區(qū)別詳解

    mybatis中#{}和${}的區(qū)別詳解

    本文主要介紹了mybatis中#{}和${}的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SpringBoot整合Quartz實(shí)現(xiàn)動(dòng)態(tài)配置的代碼示例

    SpringBoot整合Quartz實(shí)現(xiàn)動(dòng)態(tài)配置的代碼示例

    這篇文章將介紹如何把Quartz定時(shí)任務(wù)做成接口,實(shí)現(xiàn)以下功能的動(dòng)態(tài)配置添加任務(wù),修改任務(wù),暫停任務(wù),恢復(fù)任務(wù),刪除任務(wù),任務(wù)列表,任務(wù)詳情,文章通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07

最新評(píng)論

绿春县| 绥滨县| 邢台市| 绵阳市| 淮滨县| 屯门区| 莱阳市| 隆化县| 霍林郭勒市| 观塘区| 濉溪县| 阜阳市| 含山县| 榆树市| 漯河市| 庆云县| 永善县| 广安市| 宁明县| 资源县| 蓝田县| 镇康县| 武鸣县| 长岛县| 大足县| 治县。| 安仁县| 图们市| 金门县| 白山市| 本溪| 水城县| 罗江县| 收藏| 富源县| 松桃| 攀枝花市| 洪湖市| 庆安县| 建水县| 镇原县|