I hope to create a authentication model to my restful API. Hope to use API token and I'm using MVC in web service and I created a auth.go controller like this.
package controllers
import (
"github.com/gin-gonic/gin"
"os"
//"github.com/jinzhu/gorm"
)
type AdsControllerAuth struct {
}
func (ac *AdsControllerAuth)TokenAuthMiddleware gin.HandlerFunc {
return func(c *gin.Context) {
token := c.Request.FormValue("api_token")
if token == "" {
respondWithError(401, "API token required", c)
return
}
if token != os.Getenv("API_TOKEN") {
respondWithError(401, "Invalid API token", c)
return
}
c.Next()
}
}
func respondWithError(code int,message string,c *gin.Context) {
resp := map[string]string{"error": message}
c.JSON(code, resp)
//c.Abort(code)
}
It doesn't working for now can some one help do this or is there are any examples to refer?
I made my own middleware to check token like below:
package main
import (
"github.com/gin-gonic/gin"
)
//JWTAuthMiddleware middleware
func JWTAuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
validateToken(c)
c.Next()
}
}
func validateToken(c *gin.Context) {
token := c.Request.Header.Get("X-Auth-Token")
if token == "" {
c.AbortWithStatus(401)
} else if checkToken(token) {
c.Next()
} else {
c.AbortWithStatus(401)
}
}
In the example, I'm using Header instead of FormValue.
Try out Chrome DHC extension to test: https://chrome.google.com/webstore/detail/dhc-rest-client/aejoelaoggembcahagimdiliamlcdmfm