私は現在APIに取り組んでおり、ちょっと待ってからGoでJWTを使ってトークンを取得する方法を理解しました。このトークンを使用すると、ユーザーを接続したままにすることはできますが、クライアントアプリケーションからどのようにログアウトできますか?ここでGolangとJWT - シンプルなログアウト
は私token.go
コードです:研究した後
package main
import (
"github.com/dgrijalva/jwt-go"
"time"
)
const (
tokenEncodeString = "something"
)
func createToken(user User) (string, error) {
// create the token
token := jwt.New(jwt.SigningMethodHS256)
// set some claims
token.Claims["username"] = user.Username;
token.Claims["password"] = user.Password;
token.Claims["exp"] = time.Now().Add(time.Hour * 72).Unix()
//Sign and get the complete encoded token as string
return (token.SignedString([]byte(tokenEncodeString)))
}
func parseToken(unparsedToken string) (bool, string) {
token, err := jwt.Parse(unparsedToken, func(token *jwt.Token) (interface{}, error) {
return []byte(tokenEncodeString), nil
})
if err == nil && token.Valid {
return true, unparsedToken
} else {
return false, ""
}
}
、私はブラックリストを使用できることを発見したが、私は実際にそれが上記のコードのように簡単なもの、で可能かどうかを知りたいです。
また、JWTプロセスで使用されるメモリで動作するソリューションを探したいと思っています。常に自分を切断/接続する人は、セッションごとにトークンを1つだけ持たなければなりません。トークンは1つではありません。
JWTログアウトは、通常、クライアント側で行われます。 「空の」トークンを発行すると、同じことをすることができます。 – anthony
いくつかのこと、jwtトークンにパスワードを格納するのはかなり悪い考えですが、署名されていても簡単にbase64をデコードできます。残りの質問については、トークンを無効にするときにサーバー側の有効期限が切れるセッションIDで解決するのが一般的です。 – photoionized
よろしくお願いいたします。メッセージに感謝します;) – Emixam23