baa middleware for jwt.
// Init 中间件初始化
func Init(b *baa.Baa) {
option := jwt.Config{
SigningKey: "vodjk.com",
CredentialsOptional: true,
ExcludeName: []string{"/login", "/verifycode"},
}
b.Use(jwt.JWT(option))
}
jwt token在header头中的标识,默认为 Authorization
验证token使用的签名字符串
option 方法是否进行验证的开关 true 验证,false 不验证,默认为false
加密算法,默认为:SigningMethodHS256
配置不进行jwt验证的URL,比如登录和注册, /login,/register
配置不进行jwt验证的URL前缀,比如所有public目录下的资源无需验证,格式为/public
jwt验证通过后,将解密后的token信息存储在baa.Context中,存储用户自定义信息使用的key, 默认为 user
提取jwt凭证的方式,默认从header中获取,可定制为从cookie等获取,name
参数是提取token的标识
默认执行 defaultExtractorFromHeader
验证token过程中出现错误执行的操作, 如用户不设置则默认访问返回401未授权
如果返回false 将 c.Break 如果返回 true 将 c.Next
默认执行 defaultOnError
附加的token检查器,将在标准token检查通过后执行
自定义token检查器
默认执行 defaultCheckJWT
建议检查流程如下:
- 检查是否是要排除的URL
- 检查是否传递了token
- 检查token是否可以正常解密
- 检查token是否过期
- 检查通过,保存customValue到context中
- 执行附加检查
- 感谢 go-jwt,本中间件基于该包实现jwt验证。
- 该中间件尽量减少与本单位项目的耦合,无侵入,可以直接拿到自己项目中使用。
- 提供了丰富的config选项,可以根据实际业务场景配置。