GetInfoFromSession.go 894 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package utils
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/net/ghttp"
  7. )
  8. var SessionTalentInfo = sessionTalentInfo{}
  9. type sessionTalentInfo struct {
  10. }
  11. func (*sessionTalentInfo)GetTalentIdFromSession(r *ghttp.Request) (int, error) {
  12. t := r.GetHeader("Token")
  13. if t == "" {
  14. return -1, errors.New("not found info by token")
  15. }
  16. infoMap := r.Session.Get(t)
  17. if infoMap == nil {
  18. return 0, errors.New("info in session not found")
  19. }
  20. sInfoMap, ok := infoMap.(g.Map)
  21. if !ok {
  22. return 0, errors.New("info in session is not a map")
  23. }
  24. sTid := sInfoMap["talentId"]
  25. if sTid == nil {
  26. return 0, errors.New("session map not contains key talentId")
  27. }
  28. tid, err := sTid.(json.Number).Int64()
  29. if err != nil {
  30. return 0, errors.New("the type of talent id in session is not int")
  31. }
  32. return int(tid), nil
  33. }