Skip to content

Latest commit

 

History

History
28 lines (19 loc) · 824 Bytes

access_control_cn.md

File metadata and controls

28 lines (19 loc) · 824 Bytes

自定义访问控制

Kitex 框架提供了一个简单的中间件构造器,可以支持用户自定义访问控制的逻辑,在特定条件下拒绝请求。下面是一个简单的例子,随机拒绝1%的请求:

package myaccesscontrol

import (
    "math/rand"
    "github.com/cloudwego/kitex/pkg/acl"
)

var errRejected = errors.New("1% rejected")

// 实现一个判断函数
func reject1percent(ctx context.Context, request interface{}) (reason error) {
    if rand.Intn(100) == 0 {
        return errRejected // 拒绝请求时,需要返回一个错误
    }
    return nil
}

var MyMiddleware = acl.NewACLMiddleware(reject1percent) // 创建中间件

随后,你可以在创建 client 或者 server 的时候,通过 WithMiddleware(myaccesscontrol.MyMiddleware) 启用该中间件。