package main import ( "github.com/goflyfox/gtoken/gtoken" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" "github.com/gogf/gf/os/glog" ) var TestServerName string //var TestServerName string = "gtoken" func main() { glog.Info("########service start...") g.Cfg().SetPath("example/sample1") s := g.Server(TestServerName) initRouter(s) glog.Info("########service finish.") s.Run() } var gfToken *gtoken.GfToken /* 统一路由注册 */ func initRouter(s *ghttp.Server) { s.Group("/", func(g *ghttp.RouterGroup) { g.Middleware(CORS) // 调试路由 g.ALL("/hello", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("hello")) }) g.ALL("/system/user", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("system user")) }) g.ALL("/user/info", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("user info")) }) g.ALL("/system/user/info", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("system user info")) }) }) loginFunc := Login // 启动gtoken gfToken := >oken.GfToken{ ServerName: TestServerName, //Timeout: 10 * 1000, CacheMode: g.Config().GetInt8("gtoken.cache-mode"), LoginPath: "/login", LoginBeforeFunc: loginFunc, LogoutPath: "/user/logout", AuthPaths: g.SliceStr{"/user", "/system"}, // 这里是按照前缀拦截,拦截/user /user/list /user/add ... AuthExcludePaths: g.SliceStr{"/user/info", "/system/user/info"}, // 不拦截路径 /user/info,/system/user/info,/system/user, GlobalMiddleware: true, // 开启全局拦截 MultiLogin: g.Config().GetBool("gtoken.multi-login"), } gfToken.Start() } func Login(r *ghttp.Request) (string, interface{}) { username := r.GetString("username") passwd := r.GetString("passwd") if username == "" || passwd == "" { r.Response.WriteJson(gtoken.Fail("账号或密码错误.")) r.ExitAll() } return username, "1" } // 跨域 func CORS(r *ghttp.Request) { r.Response.CORSDefault() r.Middleware.Next() }