login_ware.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package middleware
  2. import (
  3. "fmt"
  4. sysmodels "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  6. "github.com/gin-gonic/gin"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. func LoginWare() gin.HandlerFunc {
  12. return func(c *gin.Context) {
  13. //验证登陆
  14. token := c.GetHeader("token")
  15. if token == "" {
  16. c.AbortWithStatusJSON(401, sysmodels.SysReturn{401, "token is empty", ""})
  17. c.Redirect(302, "/login")
  18. return
  19. }
  20. tk := utils.GetGlobalTokenStore().Get(token)
  21. if tk == nil {
  22. c.AbortWithStatusJSON(401, sysmodels.SysReturn{401, "token Invalid", ""})
  23. c.Redirect(302, "/login")
  24. return
  25. }
  26. //非移动端登录
  27. userAgent := c.Request.UserAgent()
  28. if !(strings.Contains(userAgent, "iPhone") || strings.Contains(userAgent, "Android") || strings.Contains(userAgent, "Dart")) {
  29. timestamp_str := strconv.FormatUint(uint64(time.Now().UnixNano()), 10)
  30. sec_tooken := utils.GenerateToken(tk.LoginID + timestamp_str)
  31. utils.GetGlobalTokenStore().SetPc(sec_tooken, tk)
  32. fmt.Println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ userAgent @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:", userAgent)
  33. }
  34. //wfendpoint := config.AppConfig.GetKey("wfendpoint")
  35. //wfclient.Instance().Init(wfendpoint, tk.UserId, tk.LoginID, tk.AccessToken, tk.Domain)
  36. c.Set("token", tk)
  37. c.Set("user_id", tk.UserId)
  38. c.Set("domain", tk.Domain)
  39. c.Next()
  40. }
  41. }