我正在运行生成JWT令牌的Go服务器。我最初的计划是使用http.Redirect使用令牌字符串作为URL的一部分来发送令牌。
这似乎不起作用,因为我使用的是Firebase静态托管,因此只有客户端路由。
如何推送令牌?标题可能是?
流程如下
ref.authWithCustomToken("AUTH_TOKEN", function(error, authData) {
func (h *myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if !cas.IsAuthenticated(r) {
cas.RedirectToLogin(w, r)
return
}
if r.URL.Path == "/logout" {
cas.RedirectToLogout(w, r)
return
}
generatedToken := generateToken("uid") // token is created using a uid and a secret
redirectURL := websiteURL + generatedToken
println(redirectURL)
println(generatedToken)
http.Redirect(w, r, redirectURL, http.StatusFound) // I attempt to send the token using a redirect. This doesn't seem to work though since the static server only supports routing for '/'.
//html.WriteTo(w)
}
答案 0 :(得分:3)
如果我正确理解了流量,那么您所缺少的是您的应用用户与之对话的终点,并且可以将令牌返回给该用户。
对此的解决方法是让用户应用程序在步骤2中传递一个高度不可取的值(“请求ID”),类似于UUID。然后令牌服务器可以在/tokens/<requestID>
中的步骤5中将令牌写入Firebase数据库,客户端正在侦听它。