91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現僅用于開發的登錄

發布時間:2021-10-26 15:59:25 來源:億速云 閱讀:129 作者:iii 欄目:編程語言

本篇內容主要講解“如何實現僅用于開發的登錄”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何實現僅用于開發的登錄”吧!

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

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

登錄

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

func login(w http.ResponseWriter, r *http.Request) {     if origin.Hostname() != "localhost" {         http.NotFound(w, r)         return     }      var input struct {         Username string `json:"username"`     }     if err := json.NewDecoder(r.Body).Decode(&input); err != nil {         http.Error(w, err.Error(), http.StatusBadRequest)         return     }     defer r.Body.Close()      var user User     if err := db.QueryRowContext(r.Context(), `         SELECT id, avatar_url         FROM users         WHERE username = $1     `, input.Username).Scan(         &user.ID,         &user.AvatarURL,     ); err == sql.ErrNoRows {         http.Error(w, "User not found", http.StatusNotFound)         return     } else if err != nil {         respondError(w, fmt.Errorf("could not query user: %v", err))         return     }      user.Username = input.Username      exp := time.Now().Add(jwtLifetime)     token, err := issueToken(user.ID, exp)     if err != nil {         respondError(w, fmt.Errorf("could not create token: %v", err))         return     }      respond(w, map[string]interface{}{         "authUser":  user,         "token":     token,         "expiresAt": exp,     }, http.StatusOK) }

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

func issueToken(subject string, exp time.Time) (string, error) {     token, err := jwtSigner.Encode(jwt.Claims{         Subject:    subject,         Expiration: json.Number(strconv.FormatInt(exp.Unix(), 10)),     })     if err != nil {         return "", err     }     return string(token), nil }

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

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

種子用戶

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

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

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

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

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

到此,相信大家對“如何實現僅用于開發的登錄”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威远县| 都江堰市| 通河县| 岑巩县| 香河县| 孝昌县| 巩义市| 凤阳县| 临夏县| 汕尾市| 建平县| 云南省| 山西省| 新丰县| 汉阴县| 石狮市| 五华县| 扶余县| 乐山市| 阿瓦提县| 南昌县| 大关县| 玛纳斯县| 交城县| 香河县| 寿阳县| 城步| 施秉县| 宁强县| 北碚区| 万安县| 连城县| 邢台县| 达孜县| 渑池县| 左云县| 自贡市| 宁海县| 重庆市| 固始县| 松潘县|