国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

構建一個即時消息應用(六):僅用于開發的登錄

開發 后端
我們已經實現了通過 GitHub 登錄,但是如果想把玩一下這個 app,我們需要幾個用戶來測試它。在這篇文章中,我們將添加一個為任何用戶提供登錄的端點,只需提供用戶名即可。該端點僅用于開發。

[[345429]]

本文是該系列的第六篇。

我們已經實現了通過 GitHub 登錄,但是如果想把玩一下這個 app,我們需要幾個用戶來測試它。在這篇文章中,我們將添加一個為任何用戶提供登錄的端點,只需提供用戶名即可。該端點僅用于開發。

首先在 main() 函數中添加此路由。

  1. router.HandleFunc("POST""/api/login", requireJSON(login)) 

登錄

此函數處理對 /api/login 的 POST 請求,其中 JSON body 只包含用戶名,并以 JSON 格式返回通過認證的用戶、令牌和過期日期。

  1. func login(w http.ResponseWriter, r *http.Request) { 
  2.     if origin.Hostname() != "localhost" { 
  3.         http.NotFound(w, r) 
  4.         return 
  5.     } 
  6.  
  7.     var input struct { 
  8.         Username string `json:"username"
  9.     } 
  10.     if err := json.NewDecoder(r.Body).Decode(&input); err != nil { 
  11.         http.Error(w, err.Error(), http.StatusBadRequest) 
  12.         return 
  13.     } 
  14.     defer r.Body.Close() 
  15.  
  16.     var user User 
  17.     if err := db.QueryRowContext(r.Context(), ` 
  18.         SELECT id, avatar_url 
  19.         FROM users 
  20.         WHERE username = $1 
  21.     `, input.Username).Scan( 
  22.         &user.ID, 
  23.         &user.AvatarURL, 
  24.     ); err == sql.ErrNoRows { 
  25.         http.Error(w, "User not found", http.StatusNotFound) 
  26.         return 
  27.     } else if err != nil { 
  28.         respondError(w, fmt.Errorf("could not query user: %v", err)) 
  29.         return 
  30.     } 
  31.  
  32.     user.Username = input.Username 
  33.  
  34.     exp := time.Now().Add(jwtLifetime) 
  35.     token, err := issueToken(user.ID, exp) 
  36.     if err != nil { 
  37.         respondError(w, fmt.Errorf("could not create token: %v", err)) 
  38.         return 
  39.     } 
  40.  
  41.     respond(w, map[string]interface{}{ 
  42.         "authUser":  user
  43.         "token":     token, 
  44.         "expiresAt": exp, 
  45.     }, http.StatusOK) 

首先,它檢查我們是否在本地主機上,或者響應為 404 Not Found。它解碼主體跳過驗證,因為這只是為了開發。然后在數據庫中查詢給定用戶名的用戶,如果沒有,則返回 404 NOT Found。然后,它使用用戶 ID 作為主題發布一個新的 JSON Web 令牌。

  1. func issueToken(subject string, exp time.Time) (string, error) { 
  2.     token, err := jwtSigner.Encode(jwt.Claims{ 
  3.         Subject:    subject, 
  4.         Expiration: json.Number(strconv.FormatInt(exp.Unix(), 10)), 
  5.     }) 
  6.     if err != nil { 
  7.         return "", err 
  8.     } 
  9.     return string(token), nil 

該函數執行的操作與 前文 相同。我只是將其移過來以重用代碼。

創建令牌后,它將使用用戶、令牌和到期日期進行響應。

種子用戶

現在,你可以將要操作的用戶添加到數據庫中。

  1. INSERT INTO users (id, username) VALUES 
  2.     (1, 'john'), 
  3.     (2, 'jane'); 

你可以將其保存到文件中,并通過管道將其傳送到 Cockroach CLI。

  1. cat seed_users.sql | cockroach sql --insecure -d messenger 

就是這樣。一旦將代碼部署到生產環境并使用自己的域后,該登錄功能將不可用。

本文也結束了所有的后端開發部分。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2020-10-09 12:45:19

創建消息即時消息編程語言

2019-09-29 15:25:13

CockroachDBGoJavaScript

2020-10-09 15:00:56

實時消息編程語言

2020-03-31 12:21:20

JSON即時消息編程語言

2019-10-28 20:12:40

OAuthGuard中間件編程語言

2020-10-16 14:40:20

即時消息Home頁面編程語言

2020-10-19 16:20:38

即時消息Conversatio編程語言

2020-10-12 09:20:13

即時消息Access頁面編程語言

2023-08-14 08:01:12

websocket8g用戶

2021-03-25 08:29:33

SpringBootWebSocket即時消息

2025-06-30 01:45:00

Netty輪詢HTTP 協議

2015-03-18 15:37:19

社交APP場景

2014-10-15 11:01:02

Web應用測試應用

2021-12-03 00:02:01

通訊工具即時

2023-02-16 14:38:24

Rnote開源繪圖

2009-06-29 09:06:42

微軟Web版MSN

2022-02-10 07:03:32

流量應用架構數據交換

2018-08-22 17:32:45

2011-12-27 09:49:50

AndroidiOSFlurry
點贊
收藏

51CTO技術棧公眾號

日本三级久久| www.51av欧美视频| 免费视频一区| 国模gogo一区二区大胆私拍| аⅴ资源新版在线天堂| 亚洲va韩国va欧美va精品| 99色精品视频| 麻豆91精品视频| 精品国产一区二区三区四区精华| 亚洲日本一区二区三区在线| 亚洲国产精品va在线看黑人动漫| 国产91足控脚交在线观看| 国产精品私房写真福利视频| 少妇精品久久久久久久久久| 九九视频免费观看视频精品| 九九精品视频在线| 午夜影视一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 欧美r片在线| 一区二区三区四区不卡在线| 欧美视频第一区| 国产精品日日摸夜夜摸av| 欧美亚洲精品一区二区| 国产91对白在线观看九色| 日本中文字幕在线视频观看| 国产一区二区不卡老阿姨| 美女在线免费视频| 99re热这里只有精品免费视频| 超碰在线免费观看97| 国产丶欧美丶日本不卡视频| 国产一区二区网| 中文字幕不卡三区| 黄动漫在线免费观看| 欧美系列日韩一区| 日韩影视在线| 日韩小视频网址| 久久电影院7| 日韩一二三区不卡在线视频| 成人国产精品免费观看| 欧美三级理论片| 色综合久久99| 国产精品亚洲d| 国产精品久久久| 美女视频一区在线观看| 人人爽人人av| 欧美色手机在线观看| 国产精品一二三产区| 成人黄色免费片| 国产aⅴ综合色| 中文产幕区在线观看 | 91精品国产综合久久久久久蜜臀 | 亚洲一区二区五区| 岛国在线大片| 日韩中文字幕在线| 国户精品久久久久久久久久久不卡| 西游记1978| 一区二区三区不卡视频在线观看| 超碰免费在线播放| 国产激情综合五月久久| 精品中文字幕一区二区| 韩国精品视频| 欧美人与性动交| 成人av免费网站| a毛片在线播放| 99精品国产高清在线观看| 中文成人av在线| 免费成人美女女| 亚洲日本一区二区三区在线不卡| 亚洲成人动漫av| 欧美午夜精品一区二区三区电影| 女人和拘做爰正片视频| 亚洲男人天堂2023| 激情综合一区二区三区| 成人午夜电影在线观看| 亚洲自拍欧美色图| 欧美性受xxxx| 色一区二区三区四区| 在线观看国产精品日韩av| 国产亚洲一区二区手机在线观看| 日韩一区二区av| 粉嫩av一区二区| 国产亚洲精品高潮| 在线一区二区三区视频| 一区国产精品| 亚洲欧美在线一区| 成人国产精品视频| av在线成人| 日韩av综合在线观看| 一区二区三区动漫| 国产午夜精品一区二区三区嫩草 | 丰满人妻一区二区三区53号| 亚洲欧美日韩一区在线| av成人动漫在线观看| 国产成人福利夜色影视| av一级毛片| 国产伦精品一区二区三毛| 欧美日韩免费在线观看| 蜜臀av国产精品久久久久| 四虎影视国产精品| 高清毛片aaaaaaaa**| 国产精品国色综合久久| 日韩精品视频在线免费观看| 久久精品视频免费观看| 亚洲欧美综合国产精品一区| 9765激情中文在线| 免费全黄无遮挡裸体毛片| 国产在线一区二区三区欧美 | 国产一区二区三区免费观看在线 | 欧美日韩欧美一区二区| 国产精品1区2区3区在线观看| 欧美日韩国产高清电影| 小视频免费在线观看| 99.玖玖.com| 99中文字幕在线观看| 91精品视频免费观看| 海角国产乱辈乱精品视频| 亚洲欧美综合区自拍另类| 99久久国产免费看| 黄色精品网站| 久久夜色精品国产噜噜av小说| 免费在线看黄色| 成人免费淫片免费观看| 性欧美18一19内谢| 国产精品一区视频| 亚洲自拍偷拍在线| 国产福利成人在线| 欧美激情综合亚洲一二区| 日韩av在线影院| 欧美猛男男办公室激情| 有坂深雪av一区二区精品| 91视视频在线直接观看在线看网页在线看 | 亚洲综合日本| 欧美a级片网站| 亚洲乱码在线| 日本一区二区免费高清视频| 国产午夜精品视频| 精品久久久久久久久久久久| 国产欧美视频在线观看| 国产精品毛片久久久久久| 亚洲欧美亚洲| 国产一区电影| 成人免费看吃奶视频网站| 中文字幕亚洲欧美在线不卡| 伊人久久综合| 本网站久久精品| 老鸭窝av在线| 欧美主播一区二区三区美女 久久精品人| 亚洲国产成人精品电影| 国产精品国产自产拍高清av王其| 亚洲成av人片乱码色午夜| 天堂成人娱乐在线视频免费播放网站| 在线黄色.com| 国产成人aa精品一区在线播放| 亚洲视频一区在线| 国产精品欧美大片| 一区二区视频国产| 色偷偷综合社区| 亚洲一区二区三区不卡国产欧美| 欧美在线91| 久久一区二区中文字幕| аⅴ资源天堂资源库在线| 在线免费av播放| 成人综合色站| 国产免费亚洲高清| 久青草国产97香蕉在线视频| 欧美午夜精品一区二区蜜桃 | 亚洲一区二区三区四区在线免费观看| 秋霞欧美视频| 亚洲女同中文字幕| 9999精品成人免费毛片在线看| 生活片a∨在线观看| 日韩一区二区在线免费| 亚洲无线观看| 中文字幕精品影院| 久久久精品国产免大香伊| 国产视频一区在线观看一区免费| 91色在线porny| 国产精品成人免费| 亚洲男帅同性gay1069| 欧美激情第1页| 日韩亚洲欧美中文高清在线| 国产97在线|亚洲| 欧美日韩综合精品| 鲁片一区二区三区| 国产精品夜夜夜一区二区三区尤| 国产精品va在线播放| 8x海外华人永久免费日韩内陆视频| 最近2019中文字幕大全第二页| 亚洲欧美日韩天堂一区二区| 欧美伊久线香蕉线新在线| 国产黄色激情视频| 久久久免费观看视频| 欧美色综合天天久久综合精品| 成人夜色视频网站在线观看| 久久一区二区三区喷水| 制服诱惑亚洲| 高清日韩av电影| 男女视频在线看| 亚洲国产一区二区三区在线| 国产精品福利观看|