| 12345678910111213141516171819202122232425262728293031323334353637 |
- package middleware
- import (
- "app/commons/core"
- "fmt"
- "github.com/gin-gonic/gin"
- "net/http"
- )
- const SignKey = "sign"
- func ExtendAuthWithName() gin.HandlerFunc {
- return func(c *gin.Context) {
- sign := c.GetHeader(SignKey)
- if sign == "" {
- c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("GetHeader :%s is null", SignKey)))
- return
- }
- // 获取所有支持的系统前缀
- sysName, err := core.GetSignSysName(sign)
- if err != nil {
- c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("SignerBySysName err:%s", err.Error())))
- return
- }
- signer, err := core.SignerBySysName(sysName)
- if err != nil {
- c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("SignerBySysName err:%s", err.Error())))
- return
- }
- core.Log.Infof("sign:%s \n sign sys:%s address:%s", sign, sysName, signer.SysAddress)
- if err := signer.VerifySignature(sign); err != nil {
- c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("VerifySignature err:%s", err.Error())))
- return
- }
- c.Next()
- }
- }
|