package auth
|
|
import (
|
"github.com/gin-gonic/gin"
|
"net/http"
|
"strings"
|
"webserver/extend/code"
|
"webserver/extend/util"
|
)
|
|
const (
|
TokenKey = "abc123456789"
|
)
|
|
type Auth interface {
|
Check(c *gin.Context)bool
|
User(c *gin.Context)interface{}
|
Login(http *http.Request,w http.ResponseWriter,user map[string]interface{})interface{}
|
Logout(http *http.Request,w http.ResponseWriter) bool
|
}
|
|
func GenerateAuthDriver() *Auth {
|
var authDriver Auth
|
authDriver = NewJwtAuthDriver()
|
return &authDriver
|
}
|
|
func AuthHandler() gin.HandlerFunc {
|
return func(c *gin.Context) {
|
urlPath := c.Request.URL.Path
|
if strings.Contains(urlPath,"/data/api-v") && !strings.Contains(urlPath,"login"){
|
jwtDriver :=NewJwtAuthDriver()
|
if !jwtDriver.Check(c) {
|
util.ResponseFormat(c,code.TokenNotFound,"尚未登录,请登录")
|
c.Abort()
|
}
|
c.Next()
|
} else {
|
c.Next()
|
}
|
}
|
}
|
|
func GetCurUser(c *gin.Context)map[string]interface{}{
|
return (*GenerateAuthDriver()).User(c).(map[string]interface{})
|
}
|