jwt.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * @description:
  3. * @Author: CP
  4. * @Date: 2020-09-17 17:15:00
  5. * @FilePath: \construction_management\web\middleware\jwt.go
  6. */
  7. package middleware
  8. import (
  9. "github.com/iris-contrib/middleware/jwt"
  10. "github.com/kataras/iris/v12"
  11. "go.mod/conf"
  12. )
  13. // ResModel 返回数据模板
  14. type ResModel struct {
  15. Code string `json:"code"`
  16. Msg string `json:"msg"`
  17. Data interface{} `json:"data"`
  18. }
  19. func JwtAuth() *jwt.Middleware {
  20. j2 := jwt.New(jwt.Config{
  21. // 注意,新增了一个错误处理函数
  22. ErrorHandler: func(ctx iris.Context, err error) {
  23. if err == nil {
  24. return
  25. }
  26. ctx.StopExecution()
  27. ctx.StatusCode(iris.StatusUnauthorized)
  28. ctx.JSON(ResModel{
  29. Code: "501",
  30. Msg: err.Error(),
  31. })
  32. },
  33. // 设置一个函数返回秘钥,关键在于return []byte("这里设置秘钥")
  34. ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
  35. return []byte(conf.SignSecret), nil
  36. },
  37. // 设置一个加密方法
  38. SigningMethod: jwt.SigningMethodHS256,
  39. })
  40. return j2
  41. }