Как проверить с помощью открытого ключа в Beego - PullRequest
0 голосов
/ 24 мая 2019

Проблема в том, как добавить Webhook в router.go Beego

// WebhookHandler ...
func (c *AuthController) WebhookHandler(w http.ResponseWriter, r *http.Request) {

publicKeyBytes, err := ioutil.ReadFile("***")
if err != nil {
    panic(err)
}

block, _ := pem.Decode(publicKeyBytes)
publicKey, err := x509.ParsePKIXPublicKey(block.Bytes)
if err != nil {
    panic(err)
}

key := publicKey.(*rsa.PublicKey)

body, err := ioutil.ReadAll(r.Body)
if err != nil {
    return
}

event, ok := VerifySignature(key, body)
if !ok {
    return
}

fmt.Println(event)
}

Работает на сыром GoLang

http.HandleFunc("/webhook", func(w http.ResponseWriter, r *http.Request) {
     ***
})

Я пробовал это

beego.Router("/webhook", &controllers.AuthController{}, "*:WebhookHandler")

Но как передать тело запроса контроллеру

...