成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[345429]]

本文是該系列的第六篇。

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

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

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

登錄

此函數(shù)處理對 /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。它解碼主體跳過驗證,因為這只是為了開發(fā)。然后在數(shù)據(jù)庫中查詢給定用戶名的用戶,如果沒有,則返回 404 NOT Found。然后,它使用用戶 ID 作為主題發(fā)布一個新的 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 

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

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

種子用戶

現(xiàn)在,你可以將要操作的用戶添加到數(shù)據(jù)庫中。

  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 

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

本文也結(jié)束了所有的后端開發(fā)部分。

 

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

2020-10-09 12:45:19

創(chuàng)建消息即時消息編程語言

2019-09-29 15:25:13

CockroachDBGoJavaScript

2020-10-09 15:00:56

實時消息編程語言

2019-10-28 20:12:40

OAuthGuard中間件編程語言

2020-03-31 12:21:20

JSON即時消息編程語言

2020-10-12 09:20:13

即時消息Access頁面編程語言

2020-10-19 16:20:38

即時消息Conversatio編程語言

2020-10-16 14:40:20

即時消息Home頁面編程語言

2021-03-25 08:29:33

SpringBootWebSocket即時消息

2023-08-14 08:01:12

websocket8g用戶

2015-03-18 15:37:19

社交APP場景

2014-10-15 11:01:02

Web應用測試應用

2021-12-03 00:02:01

通訊工具即時

2009-06-29 09:06:42

微軟Web版MSN

2023-02-16 14:38:24

Rnote開源繪圖

2022-02-10 07:03:32

流量應用架構(gòu)數(shù)據(jù)交換

2018-08-22 17:32:45

2023-09-15 10:10:05

R 語言

2018-06-19 16:04:27

Dubbo應用Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线国产一区 | 日韩精品一区二区三区中文在线 | 亚洲精品v日韩精品 | 狠狠色网 | 亚洲日本中文字幕在线 | 久久在线看 | 操操网站| 久久久网| 日日精品| 在线国产精品一区 | 亚洲一区二区在线播放 | 日本久久久久久 | 成人在线视频免费看 | 日本三级在线视频 | 国产乱码精品一品二品 | 亚洲精品久久久一区二区三区 | 97超碰人人 | 免费国产黄 | 日韩精品一区二区三区四区视频 | 视频国产一区 | 一区二区三区四区五区在线视频 | 在线精品国产 | 免费久久网 | 国产精品一区二区在线 | 一区二区三区四区在线视频 | 激情网站在线观看 | 久久久久久99 | 欧美一级大片免费观看 | 国产99久久久国产精品下药 | 97精品超碰一区二区三区 | 伊人精品在线 | 久久久久国产一区二区三区 | 中文字幕一区二区三区四区 | 亚洲国产一区二区在线 | 久久久网 | 午夜丰满少妇一级毛片 | 国产精品国产成人国产三级 | 粉嫩国产精品一区二区在线观看 | 99久久精品免费看国产高清 | 日本午夜一区二区三区 | 中文字幕国产精品视频 |