package main
import (
"fmt"
"github.com/kataras/iris"
"github.com/kataras/iris/middleware/jwt"
)
func main() {
app := iris.Default()
// 创建JWT中间件
myJWT := jwt.New(jwt.Config{
// 密钥,应使用环境变量或配置文件管理密钥
SigningKey: []byte("My_Secret_Key"),
})
// 自定义中间件,用于验证JWT
app.Use(myJWT.Serve)
// 应用路由
app.Get("/", func(ctx iris.Context) {
ctx.WriteString("Hello, World!")
})
// 受保护的路由
// 只有通过验证的用户可以访问
app.Get("/protected", myJWT.Serve, func(ctx iris.Context) {
user := ctx.Values().Get("jwt").(*jwt.Token)
fmt.Printf("Protected route accessed by: %s\n", user.Subject)
ctx.Writef("Hello, %s! This is a protected route.", user.Subject)
})
// 启动服务器
app.Run(iris.Addr(":8080"))
}
这个代码实例演示了如何在Iris框架中使用JWT中间件来保护路由。首先创建了一个JWT中间件实例,并定义了密钥。然后,将JWT中间件应用到路由中,从而在访问受保护的路由时要求提供有效的JWT令牌。