GetInfoFromSession.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package utils
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/net/ghttp"
  7. )
  8. // 定义接口给外部调用
  9. var SessionTalentInfo = sessionTalentInfo{}
  10. // 定义类
  11. type sessionTalentInfo struct {
  12. }
  13. // 为类绑定方法
  14. func (*sessionTalentInfo) GetTalentIdFromSession(r *ghttp.Request) (string, error) {
  15. //在前端request1111.js中手动把token加入header中的
  16. t := r.GetHeader("Token")
  17. fmt.Println("Token------->", t)
  18. if t == "" {
  19. return "", errors.New("not found info by token")
  20. }
  21. //通过token从请求的session中获得信息,session是用来存储用户对话的地方
  22. infoMap := r.Session.Get(t)
  23. if infoMap == nil {
  24. return "", errors.New("info in session not found")
  25. }
  26. //g.Map类似字典
  27. sInfoMap, ok := infoMap.(g.Map)
  28. if !ok {
  29. return "", errors.New("info in session is not a map")
  30. }
  31. fmt.Println("session")
  32. fmt.Println(sInfoMap)
  33. sTid := sInfoMap["talentId"]
  34. if sTid == nil {
  35. return "", errors.New("session map not contains key talentId")
  36. }
  37. tid := sTid.(string)
  38. return tid, nil
  39. }
  40. func (*sessionTalentInfo) GetOpenIdFromSession(r *ghttp.Request) (string, error) {
  41. t := r.GetHeader("Token")
  42. if t == "" {
  43. return "", errors.New("not found info by token")
  44. }
  45. infoMap := r.Session.Get(t)
  46. if infoMap == nil {
  47. return "", errors.New("info in session not found")
  48. }
  49. sInfoMap, ok := infoMap.(g.Map)
  50. if !ok {
  51. return "", errors.New("info in session is not a map")
  52. }
  53. openId := sInfoMap["wxOpenId"]
  54. if openId == nil {
  55. return "", errors.New("session map not contains key wxOpenId")
  56. }
  57. return openId.(string), nil
  58. }