ZBLOG

go-zero 实现jwt 校验tokende api接口组

在使用 Go-Zero 框架实现 JWT 校验的 API 接口时,你可以按照以下步骤进行:

1. 安装依赖

首先,确保你已经安装了 go-zerojwt-go 库。

  1. go get github.com/zeromicro/go-zero
  2. go get github.com/dgrijalva/jwt-go

2. 创建 JWT 中间件

你需要创建一个中间件来处理 JWT 的校验逻辑。以下是一个简单的 JWT 校验中间件示例:

  1. package middleware
  2. import (
  3. "net/http"
  4. "strings"
  5. "github.com/dgrijalva/jwt-go"
  6. )
  7. var jwtSecret = []byte("your_secret_key") // 替换为你的密钥
  8. func JwtMiddleware(next http.Handler) http.Handler {
  9. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  10. tokenString := r.Header.Get("Authorization")
  11. if tokenString == "" || !strings.HasPrefix(tokenString, "Bearer ") {
  12. http.Error(w, "Unauthorized", http.StatusUnauthorized)
  13. return
  14. }
  15. tokenString = strings.TrimPrefix(tokenString, "Bearer ")
  16. claims := &jwt.StandardClaims{}
  17. token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) {
  18. return jwtSecret, nil
  19. })
  20. if err != nil || !token.Valid {
  21. http.Error(w, "Unauthorized", http.StatusUnauthorized)
  22. return
  23. }
  24. next.ServeHTTP(w, r)
  25. })
  26. }

3. 创建 API 接口

接下来,创建你的 API 接口,并将 JWT 中间件应用到这些接口上。

  1. package main
  2. import (
  3. "net/http"
  4. "github.com/gorilla/mux"
  5. "your_project_path/middleware" // 修改为实际路径
  6. )
  7. func main() {
  8. r := mux.NewRouter()
  9. // 应用JWT中间件到某些路由上
  10. r.Handle("/api/protected", middleware.JwtMiddleware(http.HandlerFunc(protectedHandler))).Methods("GET")
  11. // 启动HTTP服务器
  12. http.ListenAndServe(":8080", r)
  13. }
  14. func protectedHandler(w http.ResponseWriter, r *http.Request) {
  15. w.Write([]byte("This is a protected route"))
  16. }

4. 使用 Postman 或 Curl 测试

在发送请求时,请确保在 Authorization 头中包含 Bearer Token。例如:

  1. curl -H "Authorization: Bearer your_jwt_token" http://localhost:8080/api/protected

如果 token 有效,你将会看到 "This is a protected route" 的响应。

注意事项

  1. 安全性:请勿硬编码敏感信息,如密钥。应使用环境变量或配置文件管理它们。
  2. Token生成:确保有一套机制去生成和签名 JWT Token。
  3. 错误处理:根据需要增强错误处理,以便提供更多上下文信息给客户端。

这样你就能使用 Go-Zero 实现一个带有 JWT 验证的 API 接口了。如果有其他具体需求或者问题,可以继续问我!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22323

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?