rustauth.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package middleware
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/lejianwen/rustdesk-api/v2/global"
  5. "github.com/lejianwen/rustdesk-api/v2/service"
  6. )
  7. func RustAuth() gin.HandlerFunc {
  8. return func(c *gin.Context) {
  9. //fmt.Println(c.Request.URL, c.Request.Header)
  10. //获取HTTP_AUTHORIZATION
  11. token := c.GetHeader("Authorization")
  12. if token == "" {
  13. c.JSON(401, gin.H{
  14. "error": "Unauthorized",
  15. })
  16. c.Abort()
  17. return
  18. }
  19. if len(token) <= 7 {
  20. c.JSON(401, gin.H{
  21. "error": "Unauthorized",
  22. })
  23. c.Abort()
  24. return
  25. }
  26. //提取token,格式是Bearer {token}
  27. //这里只是简单的提取
  28. token = token[7:]
  29. //验证token
  30. //检查是否设置了jwt key
  31. if len(global.Jwt.Key) > 0 {
  32. uid, _ := service.AllService.UserService.VerifyJWT(token)
  33. if uid == 0 {
  34. c.JSON(401, gin.H{
  35. "error": "Unauthorized",
  36. })
  37. c.Abort()
  38. return
  39. }
  40. }
  41. user, ut := service.AllService.UserService.InfoByAccessToken(token)
  42. if user.Id == 0 {
  43. c.JSON(401, gin.H{
  44. "error": "Unauthorized",
  45. })
  46. c.Abort()
  47. return
  48. }
  49. if !service.AllService.UserService.CheckUserEnable(user) {
  50. c.JSON(401, gin.H{
  51. "error": "Unauthorized",
  52. })
  53. c.Abort()
  54. return
  55. }
  56. c.Set("curUser", user)
  57. c.Set("token", token)
  58. service.AllService.UserService.AutoRefreshAccessToken(ut)
  59. c.Next()
  60. }
  61. }