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

golang實(shí)現(xiàn)單點(diǎn)登錄系統(tǒng)(go-sso)

 更新時(shí)間:2020年06月12日 09:48:29   作者:guyan0319  
這篇文章主要介紹了golang實(shí)現(xiàn)單點(diǎn)登錄系統(tǒng)(go-sso),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

這是一個(gè)基于Go語言開發(fā)的單點(diǎn)登錄系統(tǒng),實(shí)現(xiàn)手機(jī)號注冊、手機(jī)號+驗(yàn)證碼登錄、手機(jī)號+密碼登錄、賬號登出等功能,用戶認(rèn)證采用cookie和jwt兩種方式。收發(fā)短信相關(guān)方法已提供,僅需根據(jù)短信通道提供商提供的接口做相應(yīng)的參數(shù)配置即可使用。

環(huán)境介紹

golang語言:go1.13.3+ 、

數(shù)據(jù)庫:mysql5.7

緩存:redis3.0

項(xiàng)目地址

https://github.com/guyan0319/ ...

依賴包:

github.com/dgrijalva/jwt-go
github.com/gin-gonic/gin
github.com/go-xorm/xorm
github.com/go-sql-driver/mysql

注意:項(xiàng)目代碼依賴管理工具采用的go-modules,需要了解的移步https://github.com/guyan0319/...

數(shù)據(jù)請求類型

Content-Type: application/json

注:這個(gè)一定要注意,其他類型服務(wù)端不識別。

快速開始

1、數(shù)據(jù)庫

sql文件在data目錄下,新建數(shù)據(jù)庫名,通過mysql管理工具或登錄mysql數(shù)據(jù)庫直接創(chuàng)建數(shù)據(jù)庫名,并導(dǎo)入ssodb.sql文件到數(shù)據(jù)庫,完成數(shù)據(jù)庫結(jié)構(gòu)創(chuàng)建。具體方法這里不再贅述。

2、配置mysql、redis

配置文件在conf目錄下,修改 mysql.go、redis.go配置成你自己的實(shí)際環(huán)境。

3、啟動(dòng)

go run main.go

4、測試

我們可以采用postman等工具,進(jìn)行客戶端瀏覽器模擬操作,也可以通過curl實(shí)現(xiàn)。

這里以curl工具為例:

注冊手機(jī)號

$ curl -X POST "http://127.0.0.1:8282/signup/mobile" -i -d '
{
"mobile":"13522227564","passwd":"123456","code": "111111"
}
'

結(jié)果

% Total 
% Received 
% Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 86 100 28 100 58 1750 3625 --:--:-- --:--:-- --:--:-- 86000HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Tue, 09 Jun 2020 08:59:36 GMT
Content-Length: 28

{
"code":200,"msg":"success"
}

注:code參數(shù)值只要隨意6位數(shù)即可,示例中服務(wù)端并沒有配置短信通道,驗(yàn)證code代碼已注釋。

手機(jī)號+密碼 登錄

$ curl -X POST "http://127.0.0.1:8282/login" -i -d '
{
"mobile":"13522227564","passwd":"123456"
}
'

結(jié)果

% Total 
 % Received 
% Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 69 100 28 100 41 451 661 --:--:-- --:--:-- --:--:-- 1112HTTP/1.1 200 OK
Access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTg1ODIwMX0.OMpRhdX2wXm1BuRmeaZtSH7L3skXhNhYc0YYUTQf7WI
Content-Type: application/json; charset=utf-8
Refresh_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTg2MDAwMX0.Hglo9i8pxFGcRcvMw8mUvXlT2JLrHSC6ocQqJseknq8
Set-Cookie: Access_Token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTg1ODIwMX0.OMpRhdX2wXm1BuRmeaZtSH7L3skXhNhYc0YYUTQf7WI; Path=/; Max-Age=86400; HttpOnly
Set-Cookie: Refresh_Token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTg2MDAwMX0.Hglo9i8pxFGcRcvMw8mUvXlT2JLrHSC6ocQqJseknq8; Path=/; Max-Age=86400; HttpOnly
Set-Cookie: UserId=1; Path=/; Max-Age=86400; HttpOnly
Date: Wed, 10 Jun 2020 06:50:01 GMT
Content-Length: 28

{
"code":200,"msg":"success"
}

手機(jī)號+驗(yàn)證碼登錄

$ curl -X POST "http://127.0.0.1:8282/login/mobile" -i -d '
{
"mobile":"13522227564","code":"123456"
}
'

結(jié)果

% Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 68 100 28 100 40 163 233 --:--:-- --:--:-- --:--:-- 397HTTP/1.1 200 OK
Access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NDIxOX0.FK-6ofW-ni8E7BcQ1tH9Z4vzQHDBbnyIcDZLEytRrfQ
Content-Type: application/json; charset=utf-8
Refresh_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NjAxOX0.gJzzho2gP1nNrkUKdtvMh0R3jGFZpA-ku0dWDvLftu0
Set-Cookie: Access_Token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NDIxOX0.FK-6ofW-ni8E7BcQ1tH9Z4vzQHDBbnyIcDZLEytRrfQ; Path=/; Max-Age=86400; HttpOnly
Set-Cookie: Refresh_Token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NjAxOX0.gJzzho2gP1nNrkUKdtvMh0R3jGFZpA-ku0dWDvLftu0; Path=/; Max-Age=86400; HttpOnly
Set-Cookie: UserId=1; Path=/; Max-Age=86400; HttpOnly
Date: Thu, 11 Jun 2020 09:30:19 GMT
Content-Length: 28

{
"code":200,"msg":"success"
}

獲取用戶信息

使用上面登錄獲取的Access_Token獲取用戶信息。

$ curl "

結(jié)果

% Total  % Received % Xferd Average Speed  Time  Time   Time Current
                 Dload Upload  Total  Spent  Left Speed
100  73 100  73  0   0 73000   0 --:--:-- --:--:-- --:--:-- 73000{"code":200,"data":
{
"id":1,"name":"","email":"","mobile":"135****27564"
}
}

查看手機(jī)號是否存在

$ curl -X POST "http://127.0.0.1:8282/signup/mobile/exist" -i -d '
{"mobile":"13522227564"
}'

結(jié)果

% Total % Received % Xferd Average Speed Time Time  Time Current
         Dload Upload Total Spent Left Speed
100 61 100 37 100 24 37000 24000 --:--:-- --:--:-- --:--:-- 61000HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Wed, 10 Jun 2020 07:40:50 GMT
Content-Length: 37

{
"code":200,"data":
{
"is_exist":true
}}

access token 續(xù)期

$ curl -X POST "

結(jié)果:

% Total % Received % Xferd Average Speed Time Time  Time Current
         Dload Upload Total Spent Left Speed
100 28 100 28 0  0 595  0 --:--:-- --:--:-- --:--:-- 595HTTP/1.1 200 OK
Access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NTEzMn0.KCNVQ39HoMZFG-Xl0xwDrVdhQO_w4-tDxWY0ebyhfyk
Content-Type: application/json; charset=utf-8
Refresh_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NjkzMn0.XijN8ZjPbZkhjJB33igti3dSm1tfd2kp_iNRtPqpwyM
Set-Cookie: Access_Token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NTEzMn0.KCNVQ39HoMZFG-Xl0xwDrVdhQO_w4-tDxWY0ebyhfyk; Path=/; Max-Age=86400; HttpOnly
Set-Cookie: Refresh_Token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjEsImV4cCI6MTU5MTk1NjkzMn0.XijN8ZjPbZkhjJB33igti3dSm1tfd2kp_iNRtPqpwyM; Path=/; Max-Age=86400; HttpOnly
Date: Thu, 11 Jun 2020 09:45:32 GMT
Content-Length: 28
{
"code":400,"msg":"success"
}

登出系統(tǒng)

$ curl -X POST "

結(jié)果

% Total % Received % Xferd Average Speed Time Time  Time Current
         Dload Upload Total Spent Left Speed
100 28 100 28 0  0 28000  0 --:--:-- --:--:-- --:--:-- 28000{"code":200,"msg":"success"
}

小結(jié)

僅使用jwt實(shí)現(xiàn)單點(diǎn)登錄會遇到兩個(gè)問題

  • 用戶無法主動(dòng)登出,即服務(wù)端發(fā)出token后,無法主動(dòng)銷毀token,用戶還可以用通過token訪問系統(tǒng),本項(xiàng)目增加了緩存登出用戶token到黑名單的方式,變相實(shí)現(xiàn)登出。
  • token續(xù)期問題,access_token攜帶有效期,有效期過了無法自動(dòng)續(xù)期。本項(xiàng)目提供了續(xù)期接口(renewal),服務(wù)端在生成access_token同時(shí)還會生成refresh_token(有效期比access_token長),用戶可以通過有效的refresh_token和access_token訪問renewal接口重新獲取新的refresh_token和access_token。

到此這篇關(guān)于golang實(shí)現(xiàn)單點(diǎn)登錄系統(tǒng)(go-sso)的文章就介紹到這了,更多相關(guān)golang單點(diǎn)登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang進(jìn)程在docker中OOM后hang住問題解析

    golang進(jìn)程在docker中OOM后hang住問題解析

    這篇文章主要介紹了golang進(jìn)程在docker中OOM后hang住問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 詳解Go語言單元測試中如何解決MySQL存儲依賴問題

    詳解Go語言單元測試中如何解決MySQL存儲依賴問題

    MySQL?存儲就是一個(gè)非常常見的外部依賴,這篇文章主要來和大家一起探討在?Go?語言中編寫單元測試時(shí),如何解決?MySQL?存儲依賴,需要的可以參考一下
    2023-07-07
  • Go高級特性探究之HTTP錯(cuò)誤處理詳解

    Go高級特性探究之HTTP錯(cuò)誤處理詳解

    在Web應(yīng)用程序中,HTTP錯(cuò)誤處理是非常重要的,它關(guān)系到Web應(yīng)用程序的穩(wěn)定性和可靠性,本文介紹如何在Go項(xiàng)目中處理HTTP錯(cuò)誤,并提供相應(yīng)的解決方案和實(shí)踐經(jīng)驗(yàn),希望對Go語言Web應(yīng)用程序的開發(fā)者有所幫助
    2023-06-06
  • 詳解Go中的高效切片拼接和Go1.22提供的新方法

    詳解Go中的高效切片拼接和Go1.22提供的新方法

    在?Go?語言中,切片拼接是一項(xiàng)常見的操作,但如果處理不當(dāng),可能會導(dǎo)致性能問題或意外的副作用,本文將詳細(xì)介紹幾種高效的切片拼接方法,希望對大家有所幫助
    2024-01-01
  • Go中的fuzz模糊測試使用實(shí)戰(zhàn)詳解

    Go中的fuzz模糊測試使用實(shí)戰(zhàn)詳解

    這篇文章主要為大家介紹了Go中的fuzz模糊測試使用實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • go使用makefile腳本編譯應(yīng)用的方法小結(jié)

    go使用makefile腳本編譯應(yīng)用的方法小結(jié)

    makefile可以看作是make工具的腳本文件, 而make主要用來處理一系列命令。常用的比如用來編譯和打包文件, 在C/C++的編譯打包中應(yīng)用最廣泛了,這篇文章主要介紹了go使用makefile腳本編譯應(yīng)用,需要的朋友可以參考下
    2022-08-08
  • Windows+Linux系統(tǒng)下Go語言環(huán)境安裝配置過程

    Windows+Linux系統(tǒng)下Go語言環(huán)境安裝配置過程

    Go 語言被設(shè)計(jì)成一門應(yīng)用于搭載 Web 服務(wù)器,存儲集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語言。這篇文章主要介紹了Windows+Linux系統(tǒng)下Go語言環(huán)境搭建配置過程,針對每種系統(tǒng)給大家講解的非常詳細(xì),需要的朋友可以參考下
    2021-06-06
  • Go singleflight使用以及原理

    Go singleflight使用以及原理

    singleflight官方解釋其為:singleflight提供了一個(gè)重復(fù)的函數(shù)調(diào)用抑制機(jī)制。通俗的解釋其作用是,若有多個(gè)協(xié)程運(yùn)行某函數(shù)時(shí),只讓一個(gè)協(xié)程去處理,然后批量返回。非常適合來做并發(fā)控制。常見用于緩存穿透的情況
    2023-01-01
  • Go處理PDF的實(shí)現(xiàn)代碼

    Go處理PDF的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Go處理PDF的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Go語言題解LeetCode下一個(gè)更大元素示例詳解

    Go語言題解LeetCode下一個(gè)更大元素示例詳解

    這篇文章主要為大家介紹了Go語言題解LeetCode下一個(gè)更大元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論

星座| 辉县市| 章丘市| 博野县| 江北区| 凤台县| 石首市| 元氏县| 揭东县| 太仓市| 故城县| 大竹县| 宝清县| 伊吾县| 伊宁县| 秦皇岛市| 收藏| 体育| 上高县| 馆陶县| 汉阴县| 阿克| 西乌| 兰西县| 清丰县| 赫章县| 阳泉市| 抚远县| 大丰市| 城市| 孟州市| 平乡县| 仙居县| 永春县| 怀化市| 普兰县| 台江县| 屯昌县| 江安县| 临清市| 喀喇沁旗|