This commit is contained in:
pyihe
2022-08-30 20:54:49 +08:00
parent 98f2f11cce
commit 877c4b0a50
2 changed files with 24 additions and 19 deletions

View File

@@ -1,6 +1,7 @@
package main
import (
"crypto/rsa"
"time"
"github.com/gin-gonic/gin"
@@ -10,7 +11,7 @@ import (
)
const (
publicKey = `-----BEGIN PUBLIC KEY-----
publicData = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuXws30YUeNhHeEqaxvCF
sQy8OrnFpj7nQ36vBVp6W3jid0QhBIOGDJicKPvpNsYiil/a/N2bn2oFpEGWW2UL
9NK5GSlxsJR1lUX+pHCvMqAuUMtkbAUFN+5x81yD5s4IlKeB4o4+5gTPbykTd1Xr
@@ -21,7 +22,7 @@ YwIDAQAB
-----END PUBLIC KEY-----
`
privateKey = `-----BEGIN PRIVATE KEY-----
privateData = `-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5fCzfRhR42Ed4
SprG8IWxDLw6ucWmPudDfq8FWnpbeOJ3RCEEg4YMmJwo++k2xiKKX9r83ZufagWk
QZZbZQv00rkZKXGwlHWVRf6kcK8yoC5Qy2RsBQU37nHzXIPmzgiUp4Hijj7mBM9v
@@ -52,24 +53,37 @@ BzB9RGx1kJOYPqhd3nyeNLY=
`
)
var (
publicKey *rsa.PublicKey
privateKey *rsa.PrivateKey
)
func init() {
var err error
publicKey, err = jwt.ParseRSAPublicKeyFromPEM([]byte(publicData))
if err != nil {
panic(err)
}
privateKey, err = jwt.ParseRSAPrivateKeyFromPEM([]byte(privateData))
if err != nil {
panic(err)
}
}
type game struct {
}
func (g *game) Handle(r http_api.IRouter) {
r.GET("/login", http_api.WrapHandler(g.login))
group := r.Group("", http_api.JWT(jwt.SigningMethodRS256, loadKey))
group := r.Group("", http_api.JWT(jwt.SigningMethodRS256, publicKey))
{
group.GET("/get", http_api.WrapHandler(g.get))
}
}
func (g *game) login(c *gin.Context) (interface{}, error) {
key, err := jwt.ParseRSAPrivateKeyFromPEM([]byte(privateKey))
if err != nil {
return nil, err
}
token, err := http_api.Token(jwt.SigningMethodRS256, key, 20*time.Second)
token, err := http_api.Token(jwt.SigningMethodRS256, privateKey, 20*time.Second)
if err != nil {
return nil, err
}
@@ -81,11 +95,6 @@ func (g *game) get(c *gin.Context) (interface{}, error) {
return 100, nil
}
func loadKey() (interface{}, error) {
return jwt.ParseRSAPublicKeyFromPEM([]byte(publicKey))
}
func main() {
config := http_api.Config{
Name: "game",

View File

@@ -99,7 +99,7 @@ func (s *HttpServer) Close() error {
return nil
}
func JWT(method jwt.SigningMethod, loadKey func() (interface{}, error)) gin.HandlerFunc {
func JWT(method jwt.SigningMethod, publicKey interface{}) gin.HandlerFunc {
return func(c *gin.Context) {
var err error
var token *jwt.Token
@@ -114,12 +114,8 @@ func JWT(method jwt.SigningMethod, loadKey func() (interface{}, error)) gin.Hand
}
tokenStr = msg[1]
}
fmt.Println(1)
token, err = jwt.Parse(tokenStr, func(token *jwt.Token) (interface{}, error) {
if loadKey != nil {
return loadKey()
}
return nil, nil
return publicKey, nil
}, jwt.WithValidMethods([]string{method.Alg()}))
end: