router.app.template 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package router
  2. import (
  3. "IotAdmin/common/middleware"
  4. "IotAdmin/core/logger"
  5. "IotAdmin/core/sdk"
  6. jwt "IotAdmin/core/sdk/pkg/jwt-auth"
  7. "os"
  8. "github.com/gin-gonic/gin"
  9. )
  10. var (
  11. routerNoCheckRole = make([]func(*gin.RouterGroup), 0)
  12. routerCheckRole = make([]func(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware), 0)
  13. )
  14. // InitRouter 路由初始化
  15. func InitRouter() {
  16. var r *gin.Engine
  17. h := sdk.Runtime.GetEngine()
  18. if h == nil {
  19. logger.Fatal("未发现Engine...")
  20. os.Exit(-1)
  21. }
  22. switch h.(type) {
  23. case *gin.Engine:
  24. r = h.(*gin.Engine)
  25. default:
  26. logger.Fatal("不支持其他engine")
  27. os.Exit(-1)
  28. }
  29. // jwt middleware
  30. authMiddleware, err := middleware.AuthInit()
  31. if err != nil {
  32. logger.Fatalf("JWT初始化错误, %s", err.Error())
  33. }
  34. // 无需认证的路由
  35. noCheckRoleRouter(r)
  36. // 需要认证的路由
  37. checkRoleRouter(r, authMiddleware)
  38. }
  39. // noCheckRoleRouter 无需认证的路由示例
  40. func noCheckRoleRouter(r *gin.Engine) {
  41. // 可根据业务需求来设置接口版本
  42. v1 := r.Group("/api")
  43. for _, f := range routerNoCheckRole {
  44. f(v1)
  45. }
  46. }
  47. // checkRoleRouter 需要认证的路由示例
  48. func checkRoleRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) {
  49. // 可根据业务需求来设置接口版本
  50. v1 := r.Group("/api")
  51. for _, f := range routerCheckRole {
  52. f(v1, authMiddleware)
  53. }
  54. }