diff --git a/app/mobile/apis/org_player_user.go b/app/mobile/apis/org_player_user.go index 16f89a1ad1246dd3bc00a7839d16d3cc368cff99..2950edb9238b84e7bed97882af102c3c518a47be 100755 --- a/app/mobile/apis/org_player_user.go +++ b/app/mobile/apis/org_player_user.go @@ -6,11 +6,12 @@ import ( "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" - "go-admin/app/mobile/service" "go-admin/app/mobile/service/dto" "go-admin/app/operate/models" "go-admin/common/actions" + "go-admin/common/utils" + "strconv" ) type OrgPlayerUser struct { @@ -52,7 +53,7 @@ func (e OrgPlayerUser) Login(c *gin.Context) { //自建tokenç”Ÿæˆ reply := new(dto.LoginReply) - //token, _ := utils.GenToken(int64(data.Id)) + token, _ := utils.GenToken(int64(data.Id)) // //a,_ := jwt.New(&jwt.GinJWTMiddleware{ // Realm: "test zone", @@ -68,8 +69,8 @@ func (e OrgPlayerUser) Login(c *gin.Context) { // TokenHeadName: "Bearer", // TimeFunc: time.Now, //}) - //reply.Token = a. - //reply.PlayerUserId = strconv.Itoa(data.Id) + reply.Token = token + reply.PlayerUserId = strconv.Itoa(data.Id) e.OK(reply, "查询æˆåŠŸ") } diff --git a/app/mobile/router/int_router.go b/app/mobile/router/int_router.go index ab65faa563bb6891abf2e75e24464097706c05d9..4f77924c07165966602de57b149a6b5e46a97d53 100755 --- a/app/mobile/router/int_router.go +++ b/app/mobile/router/int_router.go @@ -7,7 +7,6 @@ import ( "github.com/gin-gonic/gin" log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk" - common "go-admin/common/middleware" ) // InitRouter 路由åˆå§‹åŒ–,ä¸è¦æ€€ç–‘,这里用到了 @@ -26,11 +25,6 @@ func InitRouter() { os.Exit(-1) } - authMiddleware, err := common.AuthInit() - if err != nil { - log.Fatalf("JWT Init Error, %s", err.Error()) - } - // 注册业务路由 - initRouter(r, authMiddleware) + initRouter(r) } diff --git a/app/mobile/router/org_league.go b/app/mobile/router/org_league.go index 536edda5ba7fc07fcd8f05d7be390000ef030b58..09bc9e5fa36072f464f1ad1673b0e1bd61419154 100755 --- a/app/mobile/router/org_league.go +++ b/app/mobile/router/org_league.go @@ -2,8 +2,6 @@ package router import ( "github.com/gin-gonic/gin" - jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/mobile/apis" ) @@ -12,9 +10,9 @@ func init() { } // registerOrgLeagueRouter -func registerOrgLeagueRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { +func registerOrgLeagueRouter(v1 *gin.RouterGroup) { api := apis.OrgLeague{} - r := v1.Group("/org-league").Use(authMiddleware.MiddlewareFunc()) + r := v1.Group("/org-league").Use() { r.GET("", api.GetPage) r.GET("/:id", api.Get) diff --git a/app/mobile/router/org_news.go b/app/mobile/router/org_news.go index 4833f632e5ed48856c4f9e47edeb2a115e4e31af..152331c4529533b0def0e23f2338664f788f711e 100755 --- a/app/mobile/router/org_news.go +++ b/app/mobile/router/org_news.go @@ -2,10 +2,7 @@ package router import ( "github.com/gin-gonic/gin" - jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/mobile/apis" - "go-admin/common/middleware" ) func init() { @@ -13,9 +10,9 @@ func init() { } // registerOrgNewsRouter -func registerOrgNewsRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { +func registerOrgNewsRouter(v1 *gin.RouterGroup) { api := apis.OrgNews{} - r := v1.Group("/org-news").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + r := v1.Group("/org-news") { r.GET("", api.GetPage) r.GET("/:id", api.Get) diff --git a/app/mobile/router/org_player.go b/app/mobile/router/org_player.go index df9c6cc72339814544ac35885cafd4a7f4401ba0..6f48e41ad8ce28a31358e770188a7c2f908ae530 100755 --- a/app/mobile/router/org_player.go +++ b/app/mobile/router/org_player.go @@ -2,10 +2,7 @@ package router import ( "github.com/gin-gonic/gin" - jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/operate/apis" - "go-admin/common/middleware" ) func init() { @@ -13,9 +10,9 @@ func init() { } // registerOrgPlayerRouter -func registerOrgPlayerRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { +func registerOrgPlayerRouter(v1 *gin.RouterGroup) { api := apis.OrgPlayer{} - r := v1.Group("/org-player").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + r := v1.Group("/org-player").Use() { r.GET("", api.GetPage) r.GET("/:id", api.Get) diff --git a/app/mobile/router/org_player_rank.go b/app/mobile/router/org_player_rank.go index 5705f18be63dcdbbfb423e4680d7b6868340d2b1..c9e2c9c1f1fa401de04f6ad164cc5ba26f8e7ed0 100755 --- a/app/mobile/router/org_player_rank.go +++ b/app/mobile/router/org_player_rank.go @@ -2,10 +2,7 @@ package router import ( "github.com/gin-gonic/gin" - jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/mobile/apis" - "go-admin/common/middleware" ) func init() { @@ -13,9 +10,9 @@ func init() { } // registerOrgTeamPlayerRouter -func registerOrgPlayerRankRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { +func registerOrgPlayerRankRouter(v1 *gin.RouterGroup) { api := apis.OrgPlayerRank{} - r := v1.Group("/org-player-rank").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + r := v1.Group("/org-player-rank") { r.GET("", api.GetPage) } diff --git a/app/mobile/router/org_player_user.go b/app/mobile/router/org_player_user.go index f2040ef9f94eae0006aff6e6125f612b14e988f5..17366e1fda881ed64a752c5331d55e54abc5f7d9 100755 --- a/app/mobile/router/org_player_user.go +++ b/app/mobile/router/org_player_user.go @@ -2,10 +2,7 @@ package router import ( "github.com/gin-gonic/gin" - jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/mobile/apis" - "go-admin/common/middleware" ) func init() { @@ -14,9 +11,9 @@ func init() { } // registerOrgPlayerUserRouter -func registerOrgPlayerUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { +func registerOrgPlayerUserRouter(v1 *gin.RouterGroup) { api := apis.OrgPlayerUser{} - r := v1.Group("/org-player-user").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + r := v1.Group("/org-player-user") { r.GET("", api.GetPage) r.GET("/:id", api.Get) diff --git a/app/mobile/router/router.go b/app/mobile/router/router.go index 20b9732ee0ee10db7361941456470dcd29682f95..6455e29385b48b0020b56468f82ee93eae6ee191 100755 --- a/app/mobile/router/router.go +++ b/app/mobile/router/router.go @@ -2,21 +2,21 @@ package router import ( "github.com/gin-gonic/gin" - jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" + "go-admin/common/middleware" ) var ( routerNoCheckRole = make([]func(*gin.RouterGroup), 0) - routerCheckRole = make([]func(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware), 0) + routerCheckRole = make([]func(v1 *gin.RouterGroup), 0) ) // initRouter 路由示例 -func initRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) *gin.Engine { +func initRouter(r *gin.Engine) *gin.Engine { // æ— éœ€è®¤è¯çš„路由 noCheckRoleRouter(r) // 需è¦è®¤è¯çš„路由 - checkRoleRouter(r, authMiddleware) + checkRoleRouter(r) return r } @@ -32,11 +32,11 @@ func noCheckRoleRouter(r *gin.Engine) { } // checkRoleRouter 需è¦è®¤è¯çš„路由示例 -func checkRoleRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) { +func checkRoleRouter(r *gin.Engine) { // 坿 ¹æ®ä¸šåŠ¡éœ€æ±‚æ¥è®¾ç½®æŽ¥å£ç‰ˆæœ¬ v1 := r.Group("/mobile/v1") - + v1.Use(middleware.JWTAuthMiddleware()) for _, f := range routerCheckRole { - f(v1, authMiddleware) + f(v1) } } diff --git a/common/middleware/mobilejwt.go b/common/middleware/mobilejwt.go new file mode 100644 index 0000000000000000000000000000000000000000..277ee750e13411fa2ace57e6b9bef82a78cb1f86 --- /dev/null +++ b/common/middleware/mobilejwt.go @@ -0,0 +1,49 @@ +package middleware + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/pkg/response" + "go-admin/common/utils" + "strconv" + "strings" +) + +// JWTAuthMiddleware 基于JWT的认è¯ä¸é—´ä»¶ +func JWTAuthMiddleware() func(c *gin.Context) { + return func(c *gin.Context) { + //ip := exnet.ClientPublicIP(c.Request) + //if ip == "" { + // ip = exnet.ClientIP(c.Request) + //} + //if ip != viper.GetString("white_ip.ip") { + // utils.ResponseErrorWithMsg(c, utils.CodeInvalidToken, "没有请求æƒé™") + // c.Abort() + // return + //} + //客户端æºå¸¦Tokenæœ‰ä¸‰ç§æ–¹å¼ 1.放在请求头 2.放在请求体 3.放在URI + authHeader := c.Request.Header.Get("Authorization") + if authHeader == "" { + response.OK(c, 401, "请求头缺少Auth Token") + c.Abort() + return + } + // æŒ‰ç©ºæ ¼åˆ†å‰² + parts := strings.SplitN(authHeader, " ", 2) + if !(len(parts) == 2 && parts[0] == "Bearer") { + response.OK(c, 402, "请求头ä¸authæ ¼å¼æœ‰è¯¯") + c.Abort() + return + } + // parts[1]是获å–到的tokenString,我们使用之å‰å®šä¹‰å¥½çš„è§£æžJWT的函数æ¥è§£æžå®ƒ + mc, err := utils.ParseToken(parts[1]) + if err != nil { + response.OK(c, 403, "invalid JWT token") + c.Abort() + return + } + c.Set("userId", mc.UserId) + fmt.Println("token:" + parts[1] + "======userid:" + strconv.FormatInt(mc.UserId, 10)) + c.Next() + } +} diff --git a/common/utils/jwt.go b/common/utils/jwt.go index 2cbb355d051d09892522e229d9888e183719d9b7..558b06ecb20715a7a87f752a2986ecbbb1ff5833 100755 --- a/common/utils/jwt.go +++ b/common/utils/jwt.go @@ -4,7 +4,6 @@ import ( "errors" "github.com/dgrijalva/jwt-go" "github.com/spf13/viper" - "time" ) type MemberInfo struct { @@ -34,8 +33,8 @@ func GenToken(userID int64) (string, error) { c := MyClaims{ userID, // è‡ªå®šä¹‰å—æ®µ jwt.StandardClaims{ - ExpiresAt: time.Now().Add(time.Hour * time.Duration(viper.GetInt("jwt.expire_hours"))).Unix(), // 过期时间 - Issuer: viper.GetString("app.name"), // ç¾å‘人 + ExpiresAt: 30 * 24 * 3600 * 1000, // 过期时间 + Issuer: "nbya", // ç¾å‘人 }, } // 使用指定的ç¾å方法创建ç¾å对象