访问控制,检查用户是否拥有访问接口的资源
go get github.com/hanguangbaihuo/sparrow_cloud_go
需要先配置JWT中间件,详见 JWT Middleware 接口添加auth认证,详见 AUTH Middleware
1. 必须提前配置jwt中间件
2. 必须初始化访问控制中间件的配置
3. 如果接口需要访问控制,则接口前必需先添加auth认证中间件,否则接口不通过
4. 如果配置跳过访问控制,仍然需要添加auth认证,因为之后变为不跳过访问控制后,必需用到user_id,该数据只能从auth中间件获得
5. 必须配置环境变量SC_ACCESS_CONTROL_SVC,访问控制服务的服务地址,例如:sparrow-access-control-svc:8001
6. 必须配置环境变量SC_ACCESS_CONTROL_API,访问控制服务的api,例如:/api/ac_i/verify/
func InitACConf(serviceName string, skipAC bool)
参数含义:
serviceName: 你的服务的名字,例如:SparrowPromotion
skipAC: 是否跳过访问控制,设置为true则跳过访问控制,但是仍然需要认证;设置为false,则不跳过访问控制
import (
...
"github.com/hanguangbaihuo/sparrow_cloud_go/middleware/jwt"
"github.com/hanguangbaihuo/sparrow_cloud_go/middleware/auth"
ac "github.com/hanguangbaihuo/sparrow_cloud_go/middleware/accesscontrol"
)
func main() {
// 初始化iris app
app := iris.New()
// 配置jwt中间件
app.Use(jwt.AutoServe)
...
// 初始化访问控制中间件配置
ac.InitACConf("SparrowPromotion", false)
// /test 接口需要用户认证并拥有admin资源才可以访问
app.Get("/test", auth.IsAuthenticated, ac.RequestSrc("admin"), processRequest)
app.Listen("8081")
}