rustauth.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package middleware
  2. import (
  3. "Gwen/service"
  4. "github.com/gin-gonic/gin"
  5. )
  6. func RustAuth() gin.HandlerFunc {
  7. return func(c *gin.Context) {
  8. //fmt.Println(c.Request.URL, c.Request.Header)
  9. //获取HTTP_AUTHORIZATION
  10. token := c.GetHeader("Authorization")
  11. if token == "" {
  12. c.JSON(401, gin.H{
  13. "error": "Unauthorized",
  14. })
  15. c.Abort()
  16. return
  17. }
  18. if len(token) <= 7 {
  19. c.JSON(401, gin.H{
  20. "error": "Unauthorized",
  21. })
  22. c.Abort()
  23. return
  24. }
  25. //提取token,格式是Bearer {token}
  26. //这里只是简单的提取
  27. token = token[7:]
  28. //验证token
  29. user, ut := service.AllService.UserService.InfoByAccessToken(token)
  30. if user.Id == 0 {
  31. c.JSON(401, gin.H{
  32. "error": "Unauthorized",
  33. })
  34. c.Abort()
  35. return
  36. }
  37. if !service.AllService.UserService.CheckUserEnable(user) {
  38. c.JSON(401, gin.H{
  39. "error": "账号已被禁用",
  40. })
  41. c.Abort()
  42. return
  43. }
  44. c.Set("curUser", user)
  45. c.Set("token", token)
  46. service.AllService.UserService.AutoRefreshAccessToken(ut)
  47. c.Next()
  48. }
  49. }