login_ware.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. ts := strings.Split(c.Request.RequestURI, "___t=")
  17. if len(ts) > 1 {
  18. token = ts[1]
  19. }
  20. }
  21. if token == "" {
  22. c.AbortWithStatusJSON(401, sysmodels.SysReturn{401, "token is empty", ""})
  23. c.Redirect(302, "/login")
  24. return
  25. }
  26. tk := utils.GetGlobalTokenStore().Get(token)
  27. if tk == nil {
  28. c.AbortWithStatusJSON(401, sysmodels.SysReturn{401, "token Invalid", ""})
  29. c.Redirect(302, "/login")
  30. return
  31. }
  32. //非移动端登录
  33. userAgent := c.Request.UserAgent()
  34. if !(strings.Contains(userAgent, "iPhone") || strings.Contains(userAgent, "Android") || strings.Contains(userAgent, "Dart")) {
  35. timestamp_str := strconv.FormatUint(uint64(time.Now().UnixNano()), 10)
  36. sec_tooken := utils.GenerateToken(tk.LoginID + timestamp_str)
  37. utils.GetGlobalTokenStore().SetPc(sec_tooken, tk)
  38. fmt.Println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ userAgent @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:", userAgent)
  39. }
  40. //wfendpoint := config.AppConfig.GetKey("wfendpoint")
  41. //wfclient.Instance().Init(wfendpoint, tk.UserId, tk.LoginID, tk.AccessToken, tk.Domain)
  42. c.Set("token", tk)
  43. c.Set("user_id", tk.UserId)
  44. c.Set("domain", tk.Domain)
  45. c.Next()
  46. }
  47. }