codecamp

Kitex 自定义访问控制

自定义访问控制

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) 启用该中间件。


Kitex 链路跟踪
Kitex 泛化调用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }