gpt4 book ai didi

go - 使用 JWT,如何检查授权 header ?

转载 作者:IT王子 更新时间:2023-10-29 02:23:02 26 4
gpt4 key购买 nike

我对使用 JWT 完全陌生,我在某个时候遇到了困难:

对于 AJAX 请求,我可以在请求之前设置授权 header ...好的。

如何将 JWT 用于“正常”请求? F.e.在重新加载页面或只是点击链接时。

如果用户未登录,我想将他重定向到登录页面。

在服务器端,我有中间件从授权 header 检查 JWT,然后授予权限或重定向到登陆页面,但目前我总是获取登陆页面,因为没有授权-非 AJAX 请求的 header 。

我将 JWT 存储在本地存储中。

我错过了什么?

问候

最佳答案

您可以将 JWT 存储在 Cookie 中。这样,它们将随每个请求(包括“正常”请求)一起发送。这是我的一个项目中的代码片段:

func loginHandler(w http.ResponseWriter, r *http.Request) {
...
accessToken := newAccessToken(...) // returns a JWT with fields .Token and .Expires
cookie := &http.Cookie{
Name: "access_token",
Value: accessToken.Token,
HttpOnly: true,
Secure:true,
Expires: time.Unix(accessToken.Expires, 0),
Path: "/",
}
http.SetCookie(w, cookie)
...
}

并取回 token :

func someHandler(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("access_token")
if err != nil {
// handle missing cookie
}
accessToken := cookie.Value
...
}

请注意,Cookie 容易受到 CSRF 攻击。

进一步阅读:Where to Store your JWTs – Cookies vs HTML5 Web Storage

关于go - 使用 JWT,如何检查授权 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38526824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com