Skip to content

Commit

Permalink
doc: update readme
Browse files Browse the repository at this point in the history
- 更新README
- 优化代码
  • Loading branch information
swpfY committed Mar 12, 2024
1 parent e5b3d06 commit 4861111
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

- 解析 JWT 凭证:如果 `header` 中包含字段 `Authorization`,且符合 [`Bearer <token>`](https://swagger.io/docs/specification/authentication/bearer-authentication/) 格式 ,则会对其进行 JWT 解码,然后传递给业务逻辑层。

- 根据特定的Cookie记录重定向。解决 [SwanHubX/habitat#121](https://github.com/SwanHubX/habitat/issues/121)

上述功能都不会干预响应,而是将解析的身份信息放置在请求头 `payload` 上,然后逻辑层根据请求头是否含有 `payload` 参数来判断请求是否携带有效凭证。

### 使用
Expand Down Expand Up @@ -79,3 +81,4 @@ http:
- `AuthUrl`(可选):转发的认证接口
- `Key`(可选):RSA公钥
- `Mark`(可选):特定的标识。例如Mark设置为 `ht-`,Cookie中有一个Key为 `ht-iop`,那么重定向时将添加路径前缀 `/iop`
15 changes: 11 additions & 4 deletions preprocess.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,17 @@ func (p *Preprocess) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
if p.mark != "" && p.redirect(req, rw) {
return
}
// 删除可能的payload头
req.Header.Del("payload")
p.forwardAuth(req) // 对会话进行转发验证
p.parseJWT(req) // 对携带JWT凭证的请求进行解析
if p.url != "" || p.publicKey != nil {
// 删除可能存在的payload头
req.Header.Del("payload")
}
if p.url != "" {
// 对会话进行转发认证
p.forwardAuth(req)
} else if p.publicKey != nil {
// 对携带JWT凭证的请求进行解析
p.parseJWT(req)
}
p.addTraceId(req, rw) // 对请求添加traceId
p.next.ServeHTTP(rw, req)
}
Expand Down

0 comments on commit 4861111

Please sign in to comment.