- Created by FLY的狐狸, last modified on Dec 28, 2020
gtoken项目示例
项目地址:https://github.com/goflyfox/gtoken
多个分组拦截器,代码示例:
// 不认证接口 s.Group("/", func(group *ghttp.RouterGroup) { group.Middleware(CORS) // 调试路由 group.ALL("/hello", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("hello")) }) }) // 认证接口 loginFunc := Login // 启动gtoken gfToken := >oken.GfToken{ ServerName: TestServerName, LoginPath: "/login", LoginBeforeFunc: loginFunc, LogoutPath: "/user/logout", AuthExcludePaths: g.SliceStr{"/user/info", "/system/user/info"}, // 不拦截路径 /user/info,/system/user/info,/system/user, MultiLogin: g.Config().GetBool("gToken.MultiLogin"), } s.Group("/", func(group *ghttp.RouterGroup) { group.Middleware(CORS) gfToken.Middleware(group) group.ALL("/system/user", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("system user")) }) group.ALL("/user/data", func(r *ghttp.Request) { r.Response.WriteJson(gfToken.GetTokenData(r)) }) group.ALL("/user/info", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("user info")) }) group.ALL("/system/user/info", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("system user info")) }) }) // 启动gtoken gfAdminToken := >oken.GfToken{ ServerName: TestServerName, //Timeout: 10 * 1000, LoginPath: "/login", LoginBeforeFunc: loginFunc, LogoutPath: "/user/logout", AuthExcludePaths: g.SliceStr{"/admin/user/info", "/admin/system/user/info"}, // 不拦截路径 /user/info,/system/user/info,/system/user, MultiLogin: g.Config().GetBool("gToken.MultiLogin"), } s.Group("/admin", func(group *ghttp.RouterGroup) { group.Middleware(CORS) gfAdminToken.Middleware(group) group.ALL("/system/user", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("system user")) }) group.ALL("/user/info", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("user info")) }) group.ALL("/system/user/info", func(r *ghttp.Request) { r.Response.WriteJson(gtoken.Succ("system user info")) }) })
gmanager项目
项目地址:https://github.com/goflyfox/gmanager
分组拦截,代码示例
urlPath := g.Config().GetString("url-path") s := g.Server() s.Group(urlPath+"/", func(group *ghttp.RouterGroup) { // 允许跨域 group.Middleware(func(r *ghttp.Request) { r.Response.CORSDefault() r.Middleware.Next() }) // 日志拦截 group.Middleware(middle.MiddlewareLog) // 通用属性 group.Middleware(middle.MiddlewareCommon) // 首页 group.ALL("/", common.Login) group.ALL("/main.html", common.Index) group.ALL("/login", common.Login) group.ALL("/welcome", common.Welcome) group.ALL("/admin/welcome.html", common.Welcome) // 启动gtoken base.Token = >oken.GfToken{ //Timeout: 10 * 1000, CacheMode: g.Config().GetInt8("gtoken.cache-mode"), MultiLogin: g.Config().GetBool("gtoken.multi-login"), LoginPath: "/login/submit", LoginBeforeFunc: common.LoginSubmit, LogoutPath: "/user/logout", LogoutBeforeFunc: common.LogoutBefore, AuthPaths: g.SliceStr{"/user", "/system"}, GlobalMiddleware: true, AuthBeforeFunc: func(r *ghttp.Request) bool { // 静态页面不拦截 if r.IsFileRequest() { return false } if strings.HasSuffix(r.URL.Path, "index") { return false } return true }, } // 需要认证 group.Group(urlPath+"/system", func(group *ghttp.RouterGroup) { // gtoken认证中间件 base.Token.Middleware(group) // 系统路由 userAction := new(user.Action) group.ALL("user", userAction) group.GET("/user/get/{id}", userAction.Get) group.ALL("user/delete/{id}", userAction.Delete) departAction := new(department.Action) group.ALL("department", departAction) group.GET("/department/get/{id}", departAction.Get) group.ALL("/department/delete/{id}", departAction.Delete) logAction := new(log.Action) group.ALL("log", logAction) group.GET("/log/get/{id}", logAction.Get) group.ALL("/log/delete/{id}", logAction.Delete) menuAction := new(menu.Action) group.ALL("menu", menuAction) group.GET("/menu/get/{id}", menuAction.Get) group.ALL("/menu/delete/{id}", menuAction.Delete) roleAction := new(role.Action) group.ALL("role", roleAction) group.GET("/role/get/{id}", roleAction.Get) group.ALL("/role/delete/{id}", roleAction.Delete) configAction := new(config.Action) group.ALL("config", configAction) group.GET("/config/get/{id}", configAction.Get) group.ALL("/config/delete/{id}", configAction.Delete) }) })
gfast项目
项目地址:https://github.com/tiger1103/gfast
全局拦截,代码示例
func initAdminGfToken() { //多端登陆配置 service.AdminMultiLogin = g.Cfg().GetBool("gToken.MultiLogin") AdminGfToken = >oken.GfToken{ CacheMode: g.Cfg().GetInt8("gToken.CacheMode"), CacheKey: g.Cfg().GetString("gToken.CacheKey"), Timeout: g.Cfg().GetInt("gToken.Timeout"), MaxRefresh: g.Cfg().GetInt("gToken.MaxRefresh"), TokenDelimiter: g.Cfg().GetString("gToken.TokenDelimiter"), EncryptKey: g.Cfg().GetBytes("gToken.EncryptKey"), AuthFailMsg: g.Cfg().GetString("gToken.AuthFailMsg"), MultiLogin: service.AdminMultiLogin, LoginPath: "/sysLogin/login", LoginBeforeFunc: service.AdminLogin, LoginAfterFunc: service.LoginAfter, LogoutPath: "/sysLogin/logout", AuthPaths: g.SliceStr{"/system/*"}, AuthAfterFunc: service.AuthAfterFunc, LogoutBeforeFunc: service.LoginOut, } AdminGfToken.Start() }
Content Menu
- No labels
3 Comments
扶程星云
水平太低,看不出来怎么用的。
王中阳Go
希望对你有帮助:GoFrame集成gtoken视频详解,包括v2和v1两个版本: https://www.bilibili.com/video/BV1v841157Bh/
王中阳Go
【视频教程】GoFrame集成gtoken视频详解,包括v2版本和v1版本。https://www.bilibili.com/video/BV1v841157Bh/