GetInfoFromSession.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. if t == "" {
  18. return "", errors.New("not found info by token")
  19. }
  20. //通过token从请求的session中获得信息,session是用来存储用户对话的地方
  21. infoMap := r.Session.Get(t)
  22. if infoMap == nil {
  23. return "", errors.New("info in session not found")
  24. }
  25. //g.Map类似字典
  26. sInfoMap, ok := infoMap.(g.Map)
  27. if !ok {
  28. return "", errors.New("info in session is not a map")
  29. }
  30. fmt.Println("session")
  31. fmt.Println(sInfoMap)
  32. sTid := sInfoMap["talentId"]
  33. if sTid == nil {
  34. return "", errors.New("session map not contains key talentId")
  35. }
  36. tid := sTid.(string)
  37. return tid, nil
  38. }
  39. func (*sessionTalentInfo) GetOpenIdFromSession(r *ghttp.Request) (string, error) {
  40. t := r.GetHeader("Token")
  41. if t == "" {
  42. return "", errors.New("not found info by token")
  43. }
  44. infoMap := r.Session.Get(t)
  45. if infoMap == nil {
  46. return "", errors.New("info in session not found")
  47. }
  48. sInfoMap, ok := infoMap.(g.Map)
  49. if !ok {
  50. return "", errors.New("info in session is not a map")
  51. }
  52. openId := sInfoMap["wxOpenId"]
  53. if openId == nil {
  54. return "", errors.New("session map not contains key wxOpenId")
  55. }
  56. return openId.(string), nil
  57. }