web_api_auth.go 704 B

12345678910111213141516171819202122232425262728293031323334
  1. package service
  2. import "time"
  3. type authHandler struct {
  4. }
  5. var (
  6. accessToken string
  7. accessTokenExpire time.Time
  8. )
  9. func (*authHandler) login(wait *WaitConn, req struct {
  10. Username string `json:"username"`
  11. Password string `json:"password"`
  12. }) {
  13. logger.Infof("%s %v", wait.GetRoute(), req)
  14. defer func() { wait.Done() }()
  15. if req.Username != config.Username || req.Password != config.Password {
  16. wait.SetResult("用户或密码错误", nil)
  17. return
  18. }
  19. now := time.Now()
  20. if accessToken == "" || now.After(accessTokenExpire) {
  21. accessToken = GenToken(20)
  22. accessTokenExpire = now.Add(time.Hour * 8)
  23. }
  24. wait.SetResult("", struct {
  25. Token string `json:"token"`
  26. }{Token: accessToken})
  27. }