|
- package service
-
- import (
- "github.com/evrone/go-clean-template/internal/entity/redisKeys"
- "github.com/evrone/go-clean-template/modules/log"
- "github.com/evrone/go-clean-template/modules/redis"
- uuid "github.com/satori/go.uuid"
- "strings"
- )
-
- var expireSeconds = int64(60 * 60 * 24)
-
- func GetAccessToken(appId string, secretKey string) (string, int64) {
- //验证secretKey是否正确
- publisher := GetPublisherByAppId(appId)
- if publisher == nil || strings.Compare(publisher.AppSecret, secretKey) != 0 {
- log.Errorf("appId or secretKey is not correct.appId=%s secretKey=%s", appId, secretKey)
- return "", 0
- }
- accessToken := strings.ReplaceAll(uuid.NewV4().String(), "-", "")
- //淘汰旧值
- oldAccessToken, _ := redis.Get(redisKeys.AccessToken(appId, secretKey))
- if oldAccessToken != "" {
- redis.Del(redisKeys.AccessTokenToAppId(accessToken))
- }
- //写入新值
-
- redis.Set(redisKeys.AccessToken(appId, secretKey), accessToken, expireSeconds)
- redis.Set(redisKeys.AccessTokenToAppId(accessToken), appId+"_"+secretKey, expireSeconds)
-
- return accessToken, expireSeconds
- }
-
- func CheckAccessToken(accessToken string) string {
- val, _ := redis.Get(redisKeys.AccessTokenToAppId(accessToken))
- if val != "" {
- a := strings.Split(val, "_")
- appId := a[0]
- secretKey := a[1]
- correctAccessToken, _ := redis.Get(redisKeys.AccessToken(appId, secretKey))
- if correctAccessToken != "" && correctAccessToken == accessToken {
- redis.Expire(redisKeys.AccessToken(appId, secretKey), expireSeconds)
- redis.Expire(redisKeys.AccessTokenToAppId(accessToken), expireSeconds)
- return appId
- }
- }
- return ""
-
- }
|