Skip to content

Commit 749e245

Browse files
committed
多媒体签名优化
1 parent 2548753 commit 749e245

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

controllers/DocumentController.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ func (this *DocumentController) Read() {
300300
poster, _ := sel.Attr("poster")
301301
src, _ := sel.Attr("src")
302302
if !(strings.HasPrefix(src, "https://") || strings.HasPrefix(src, "http://")) {
303-
sign, _ := utils.GenerateSign(src, time.Duration(utils.MediaDuration)*time.Second)
303+
sign, _ := utils.GenerateMediaSign(src, time.Duration(utils.MediaDuration)*time.Second)
304304
if strings.Contains(src, "?") {
305305
src = src + "&sign=" + sign
306306
} else {

controllers/StaticController.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ func (this *StaticController) isBookOwner() (yes bool) {
170170

171171
// 是否是合法的签名(针对音频和视频,签名不可用的时候再验证用户有没有登录,用户登录了再验证用户是不是书籍所有人)
172172
func (this *StaticController) isValidSign(sign, path string) bool {
173-
signPath, err := utils.ParseSign(sign)
173+
signPath, err := utils.ParseMediaSign(sign)
174174
if err != nil {
175175
return false
176176
}

controllers/api/CommonController.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -949,7 +949,7 @@ func (this *CommonController) handleReleaseV3(release, bookIdentify string) inte
949949
}
950950
}
951951
} else {
952-
if sign, err := utils.GenerateSign(src, time.Duration(utils.MediaDuration)); err == nil {
952+
if sign, err := utils.GenerateMediaSign(src, time.Duration(utils.MediaDuration)); err == nil {
953953
if strings.Contains(src, "?") {
954954
src = src + "&sign=" + sign
955955
} else {

utils/jwt.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ import (
1010
"github.com/dgrijalva/jwt-go"
1111
)
1212

13-
// CustomClaims CustomClaims
14-
type CustomClaims struct {
13+
// MediaClaims Media Claims
14+
type MediaClaims struct {
1515
Path string
1616
jwt.StandardClaims
1717
}
1818

1919
var (
20-
jwtSecret = beego.AppConfig.DefaultString("jwt_secret", "bookstack.cn")
21-
usedSign sync.Map
22-
MediaDuration int64 = beego.AppConfig.DefaultInt64("media_duration", 3600*5)
20+
mediaJwtSecret = beego.AppConfig.DefaultString("jwt_secret", "bookstack.cn")
21+
usedSign sync.Map
22+
MediaDuration int64 = beego.AppConfig.DefaultInt64("media_duration", 3600*5)
2323
)
2424

2525
func init() {
@@ -52,15 +52,15 @@ func IsSignUsed(sign string) bool {
5252
}
5353

5454
// GenerateSign 生成token
55-
func GenerateSign(path string, expire ...time.Duration) (sign string, err error) {
55+
func GenerateMediaSign(path string, expire ...time.Duration) (sign string, err error) {
5656
path = strings.TrimLeft(path, "/")
5757
// 默认过期时间为一个月
5858
expireDuration := time.Now().Add(30 * 24 * time.Hour)
5959
if len(expire) > 0 {
6060
expireDuration = time.Now().Add(expire[0])
6161
}
6262

63-
customClaims := &CustomClaims{
63+
customClaims := &MediaClaims{
6464
path,
6565
jwt.StandardClaims{
6666
ExpiresAt: expireDuration.Unix(),
@@ -71,24 +71,24 @@ func GenerateSign(path string, expire ...time.Duration) (sign string, err error)
7171
jwtToken := jwt.NewWithClaims(jwt.SigningMethodHS256, customClaims)
7272

7373
// secret 用于对用户数据进行签名,不能暴露
74-
return jwtToken.SignedString([]byte(jwtSecret))
74+
return jwtToken.SignedString([]byte(mediaJwtSecret))
7575
}
7676

7777
// ParseSign 解析jwt token
78-
func ParseSign(sign string) (path string, err error) {
78+
func ParseMediaSign(sign string) (path string, err error) {
7979
var token = &jwt.Token{}
80-
token, err = jwt.ParseWithClaims(sign, &CustomClaims{}, func(token *jwt.Token) (interface{}, error) {
80+
token, err = jwt.ParseWithClaims(sign, &MediaClaims{}, func(token *jwt.Token) (interface{}, error) {
8181
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
8282
return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
8383
}
84-
return []byte(jwtSecret), nil
84+
return []byte(mediaJwtSecret), nil
8585
})
8686

8787
if err != nil {
8888
return
8989
}
9090

91-
if claims, ok := token.Claims.(*CustomClaims); ok && token.Valid {
91+
if claims, ok := token.Claims.(*MediaClaims); ok && token.Valid {
9292
return strings.TrimLeft(claims.Path, "/"), nil
9393
}
9494
return "", err

0 commit comments

Comments
 (0)