middleware.go 955 字节
package middleware

import (
	"errors"
	"github.com/astaxie/beego/context"
	"github.com/tiptok/gocomm/common"
	"gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol"
	"strconv"
	"strings"
)

var (
	errAuthorization       = errors.New("无访问权限")
	errAuthorizationExpire = errors.New("权限已过期,请重新登录")
)

func CheckAuthorization(ctx *context.Context) {
	var (
		msg *protocol.ResponseMessage
	)
	defer func() {
		if msg != nil {
			ctx.Output.JSON(msg, false, false)
		}
	}()
	authorization := ctx.Input.Header("Authorization")
	if len(authorization) == 0 {
		msg = protocol.NewResponseMessage(1, errAuthorization.Error())
		return
	}
	token := strings.Split(authorization, " ")[1]
	claim, err := common.ParseJWTToken(token)
	if err != nil {
		msg = protocol.NewResponseMessage(1, errAuthorizationExpire.Error())
		return
	}
	userId, _ := strconv.Atoi(claim.Username)
	ctx.Input.SetData("x-mmm-id", userId)
	//TODO:check redis cache
}