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 := &gtoken.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 := &gtoken.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 = &gtoken.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 = &gtoken.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

  1. 水平太低,看不出来怎么用的。

    1. 希望对你有帮助:GoFrame集成gtoken视频详解,包括v2和v1两个版本: https://www.bilibili.com/video/BV1v841157Bh/

  2. 【视频教程】GoFrame集成gtoken视频详解,包括v2版本和v1版本。https://www.bilibili.com/video/BV1v841157Bh/