Modify: add time.Now for expiration inside signing function
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -32,6 +33,11 @@ type Auth interface {
|
||||
// 包含 X-Policy, 则此请求会被认定为上传请求,只会对URI部分和
|
||||
// Policy部分进行签名。其他请求则会对URI和Body部分进行签名。
|
||||
func SignRequest(instance Auth, r *http.Request, expires int64) *http.Request {
|
||||
// 处理有效期
|
||||
if expires > 0 {
|
||||
expires += time.Now().Unix()
|
||||
}
|
||||
|
||||
// 生成签名
|
||||
sign := instance.Sign(getSignContent(r), expires)
|
||||
|
||||
@@ -73,6 +79,11 @@ func getSignContent(r *http.Request) (rawSignString string) {
|
||||
|
||||
// SignURI 对URI进行签名,签名只针对Path部分,query部分不做验证
|
||||
func SignURI(instance Auth, uri string, expires int64) (*url.URL, error) {
|
||||
// 处理有效期
|
||||
if expires != 0 {
|
||||
expires += time.Now().Unix()
|
||||
}
|
||||
|
||||
base, err := url.Parse(uri)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"net/http"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestSignURI(t *testing.T) {
|
||||
@@ -37,14 +36,14 @@ func TestCheckURI(t *testing.T) {
|
||||
|
||||
// 成功
|
||||
{
|
||||
sign, err := SignURI(General, "/api/ok?if=sdf&fd=go", time.Now().Unix()+10)
|
||||
sign, err := SignURI(General, "/api/ok?if=sdf&fd=go", 10)
|
||||
asserts.NoError(err)
|
||||
asserts.NoError(CheckURI(General, sign))
|
||||
}
|
||||
|
||||
// 过期
|
||||
{
|
||||
sign, err := SignURI(General, "/api/ok?if=sdf&fd=go", time.Now().Unix()-1)
|
||||
sign, err := SignURI(General, "/api/ok?if=sdf&fd=go", -1)
|
||||
asserts.NoError(err)
|
||||
asserts.Error(CheckURI(General, sign))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user