ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
Iris 通过它的 [jwt 中间件](https://github.com/iris-contrib/middleware/tree/master/jwt)提供请求身份验证。 在本章中,将学习如何将 JWT 与 Iris 结合使用的基础知识。 1. 通过执行以下 shell 命令来安装它: ``` $ go get github.com/iris-contrib/middleware/jwt ``` 2. 要创建新的, 请使用 ` jwt.New` 函数。 本示例通过 `"token"` url 参数提取令牌。经过身份验证的客户端应设计为使用签名令牌进行设置。缺省的 jwt 中间件提取令牌值的行为是通过 `Authentication: Bearer $TOKEN` 标头。 jwt 中间件具有三种验证令牌的方法。 * 第一个是 `Serve` 方法 - 它是一个 `iris.Handler`, * 第二个是 ` CheckJWT(iris.Context) bool` 和 * 第三个是检索已验证令牌的助手 - ` Get(iris.Context) *jwt.Token`。 3. 要注册它, 你只需在` jwt j.Serve` 中间件之前添加特定的路由组,单个路由或全局路由即可。`app.Get("/secured", j.Serve, myAuthenticatedHandler)`。 4. 在处理程序内生成令牌,该处理程序接受用户有效负载并响应已签名的令牌, 此后稍后可以通过客户端请求标头或url参数发送该令牌,例如 `jwt.NewToken` 或 `jwt.NewTokenWithClaims`。 ## 示例 ``` import ( "github.com/kataras/iris/v12" "github.com/iris-contrib/middleware/jwt" ) func getTokenHandler(ctx iris.Context) { token := jwt.NewTokenWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "foo": "bar", }) // 使用密码签名并获取完整的编码令牌作为字符串 tokenString, _ := token.SignedString([]byte("My Secret")) ctx.HTML(`Token: ` + tokenString + `<br/><br/> <a href="/secured?token=` + tokenString + `">/secured?token=` + tokenString + `</a>`) } func myAuthenticatedHandler(ctx iris.Context) { user := ctx.Values().Get("jwt").(*jwt.Token) ctx.Writef("This is an authenticated request\n") ctx.Writef("Claim content:\n") foobar := user.Claims.(jwt.MapClaims) for key, value := range foobar { ctx.Writef("%s = %s", key, value) } } func main(){ app := iris.New() j := jwt.New(jwt.Config{ // 通过 "token" URL参数提取。 Extractor: jwt.FromParameter("token"), ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) { return []byte("My Secret"), nil }, SigningMethod: jwt.SigningMethodHS256, }) app.Get("/", getTokenHandler) app.Get("/secured", j.Serve, myAuthenticatedHandler) app.Run(iris.Addr(":8080")) } ``` 可以将任何有效负载用作 "声明"。