日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go 语言web 框架 Gin 练习4

發(fā)布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go 语言web 框架 Gin 练习4 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

文章目錄

  • 1 介紹
  • 2 練習(xí)
    • 友情援助

1 介紹

Gin是一個golang的微框架,封裝比較優(yōu)雅,API友好,源碼注釋比較明確,具有快速靈活,容錯方便等特點

對于golang而言,web框架的依賴要遠(yuǎn)比Python,Java之類的要小。自身的net/http足夠簡單,性能也非常不錯

借助框架開發(fā),不僅可以省去很多常用的封裝帶來的時間,也有助于團(tuán)隊的編碼風(fēng)格和形成規(guī)范.

2 練習(xí)

本次練習(xí)主要爭對上一次任務(wù)進(jìn)行了改善,
上一次發(fā)放的token是一個固定的11,
沒有起到token的作用,
這次改良它。

具體實現(xiàn)函數(shù)如下,

func Login(ctx *gin.Context) {//獲取參數(shù)DB := common.GetDB()telephone := ctx.PostForm("telephone")password := ctx.PostForm("password")//數(shù)據(jù)驗證if len(telephone) != 11 {ctx.JSON(http.StatusUnprocessableEntity,gin.H{"code": 422, "msg": "手機(jī)號必須為11位"})return}if len(password) < 6 || len(password) > 11 {ctx.JSON(http.StatusUnprocessableEntity,gin.H{"code": 422, "msg": "密碼必須大于6位且小于11位"})return}//手機(jī)號判斷var user Model.UserDB.Where("telephone=?", telephone).First(&user)if user.ID == 0 {ctx.JSON(http.StatusUnprocessableEntity, gin.H{"code": 422,"msg": "用戶不存在"})return}//判斷密碼正確?if err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password)); err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"code": 400, "msg": "密碼錯誤"})return} //發(fā)放tokentoken, err := common.ReleaseToken(user)if err != nil {ctx.JSON(http.StatusInternalServerError, gin.H{"code": 500,"msg": "系統(tǒng)異常"})log.Printf("token generate error:%v", err)return}

本次代碼主要修改工作,
主體部分,就是調(diào)用common里的releasetoken函數(shù),
獲得token。

package commonimport ("GINVUE/Model""time""github.com/dgrijalva/jwt-go" )var jwtKey = []byte("a_secret_crect")type Claims struct {UserId uintjwt.StandardClaims }func ReleaseToken(user Model.User) (string, error) {expirationTime := time.Now().Add(1 * 24 * time.Hour)claims := &Claims{UserId: user.ID,StandardClaims: jwt.StandardClaims{ExpiresAt: expirationTime.Unix(),IssuedAt: time.Now().Unix(),Issuer: "GIN01",Subject: "user token",},}token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)tokenString, err := token.SignedString(jwtKey)if err != nil {return " ", err}return tokenString, nil }

上面是token的生成函數(shù),主題部分調(diào)用了,jwt相關(guān)函數(shù)生成相應(yīng)代碼。

友情援助

有問題的可以關(guān)注公眾號,博主會在24小時內(nèi)回復(fù)。

總結(jié)

以上是生活随笔為你收集整理的Go 语言web 框架 Gin 练习4的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。