Skip to content

Commit

Permalink
重写/拆分 Gateway 实现
Browse files Browse the repository at this point in the history
  • Loading branch information
movsb committed Jun 19, 2024
1 parent 6d32d9e commit 9144401
Showing 1 changed file with 1 addition and 29 deletions.
30 changes: 1 addition & 29 deletions service/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -333,12 +333,6 @@ var methodThrottlerInfo = map[string]struct {
// 仅节流返回正确错误码的接口。
// 如果接口返回错误,不更新。
OnSuccess bool

// 是否应该保留为内部调用接口。
// 限制接口应该尽量被内部调用。
// 如果不是,也不严重,无权限问题),只是没必要暴露。
// 主要是对外非管理员接口,管理员接口不受此限制。
Internal bool
}{
`/protocols.TaoBlog/CreateComment`: {
Interval: time.Second * 10,
Expand All @@ -350,29 +344,11 @@ var methodThrottlerInfo = map[string]struct {
Message: `评论更新过于频繁,请稍等几秒后再试。`,
OnSuccess: true,
},
`/protocols.TaoBlog/GetComment`: {
Internal: true,
},
`/protocols.TaoBlog/ListComments`: {
Internal: true,
},
`/protocols.TaoBlog/GetPostComments`: {
Internal: true,
},
`/protocols.TaoBlog/CheckCommentTaskListItems`: {
Interval: time.Second * 5,
Message: `任务完成得过于频繁?`,
OnSuccess: false,
},
`/protocols.TaoBlog/GetPost`: {
Internal: true,
},
`/protocols.TaoBlog/ListPosts`: {
Internal: true,
},
`/protocols.TaoBlog/GetPostsByTags`: {
Internal: true,
},
}

// 请求节流器限流信息。
Expand All @@ -398,7 +374,7 @@ func throttlerKeyOf(ctx context.Context) _RequestThrottlerKey {
}

func (s *Service) throttlerGatewayInterceptor(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error) {
ac := auth.Context(ctx)
// ac := auth.Context(ctx)
key := throttlerKeyOf(ctx)
ti, ok := methodThrottlerInfo[info.FullMethod]
if ok {
Expand All @@ -408,10 +384,6 @@ func (s *Service) throttlerGatewayInterceptor(ctx context.Context, req any, info
return nil, status.Error(codes.Aborted, msg)
}
}
// TODO 只是限制了通过 HTTP 接口进行的调用,没限制 GRPC 接口。
if ti.Internal && !ac.User.IsAdmin() {
return nil, status.Error(codes.FailedPrecondition, `此接口限管理员或内部调用。`)
}
}

resp, err := handler(ctx, req)
Expand Down

0 comments on commit 9144401

Please sign in to comment.