| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package gtoken
- import (
- "context"
- "errors"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/net/ghttp"
- "github.com/gogf/gf/v2/text/gstr"
- )
- // Middleware 绑定group
- func (m *GfToken) Middleware(ctx context.Context, group *ghttp.RouterGroup) error {
- if !m.InitConfig() {
- return errors.New("InitConfig fail")
- }
- // 设置为Group模式
- m.MiddlewareType = MiddlewareTypeGroup
- g.Log().Info(ctx, "[GToken][params:"+m.String()+"]start... ")
- // 缓存模式
- if m.CacheMode > CacheModeFile {
- g.Log().Error(ctx, "[GToken]CacheMode set error")
- return errors.New("CacheMode set error")
- }
- // 登录
- if m.LoginPath == "" || m.LoginBeforeFunc == nil {
- g.Log().Error(ctx, "[GToken]LoginPath or LoginBeforeFunc not set")
- return errors.New("LoginPath or LoginBeforeFunc not set")
- }
- // 登出
- if m.LogoutPath == "" {
- g.Log().Error(ctx, "[GToken]LogoutPath not set")
- return errors.New("LogoutPath not set")
- }
- group.Middleware(m.authMiddleware)
- registerFunc(ctx, group, m.LoginPath, m.Login)
- registerFunc(ctx, group, m.LogoutPath, m.Logout)
- return nil
- }
- // 如果包含请求方式,按照请求方式注册;默认注册所有
- func registerFunc(ctx context.Context, group *ghttp.RouterGroup, pattern string, object interface{}) {
- if gstr.Contains(pattern, ":") || gstr.Contains(pattern, "@") {
- group.Map(map[string]interface{}{
- pattern: object,
- })
- } else {
- group.ALL(pattern, object)
- }
- }
|