mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 13:00:54 +00:00
update output.Cookie
This commit is contained in:
parent
002e0854ab
commit
03037170e1
@ -77,43 +77,59 @@ func (output *BeegoOutput) Cookie(name string, value string, others ...interface
|
|||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
fmt.Fprintf(&b, "%s=%s", sanitizeName(name), sanitizeValue(value))
|
fmt.Fprintf(&b, "%s=%s", sanitizeName(name), sanitizeValue(value))
|
||||||
if len(others) > 0 {
|
if len(others) > 0 {
|
||||||
switch others[0].(type) {
|
switch v := others[0].(type) {
|
||||||
case int:
|
case int:
|
||||||
if others[0].(int) > 0 {
|
if v > 0 {
|
||||||
fmt.Fprintf(&b, "; Max-Age=%d", others[0].(int))
|
fmt.Fprintf(&b, "; Max-Age=%d", v)
|
||||||
} else if others[0].(int) < 0 {
|
} else if v < 0 {
|
||||||
fmt.Fprintf(&b, "; Max-Age=0")
|
fmt.Fprintf(&b, "; Max-Age=0")
|
||||||
}
|
}
|
||||||
case int64:
|
case int64:
|
||||||
if others[0].(int64) > 0 {
|
if v > 0 {
|
||||||
fmt.Fprintf(&b, "; Max-Age=%d", others[0].(int64))
|
fmt.Fprintf(&b, "; Max-Age=%d", v)
|
||||||
} else if others[0].(int64) < 0 {
|
} else if v < 0 {
|
||||||
fmt.Fprintf(&b, "; Max-Age=0")
|
fmt.Fprintf(&b, "; Max-Age=0")
|
||||||
}
|
}
|
||||||
case int32:
|
case int32:
|
||||||
if others[0].(int32) > 0 {
|
if v > 0 {
|
||||||
fmt.Fprintf(&b, "; Max-Age=%d", others[0].(int32))
|
fmt.Fprintf(&b, "; Max-Age=%d", v)
|
||||||
} else if others[0].(int32) < 0 {
|
} else if v < 0 {
|
||||||
fmt.Fprintf(&b, "; Max-Age=0")
|
fmt.Fprintf(&b, "; Max-Age=0")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(others) > 1 {
|
if len(others) > 1 {
|
||||||
if len(others[1].(string)) == 0 {
|
if v, ok := others[1].(string); ok && len(v) > 0 {
|
||||||
fmt.Fprintf(&b, "; Path=%s", '/')
|
fmt.Fprintf(&b, "; Path=%s", sanitizeValue(v))
|
||||||
} else {
|
} else {
|
||||||
fmt.Fprintf(&b, "; Path=%s", sanitizeValue(others[1].(string)))
|
fmt.Fprintf(&b, "; Path=%s", '/')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(others) > 2 && len(others[2].(string)) > 0 {
|
if len(others) > 2 {
|
||||||
fmt.Fprintf(&b, "; Domain=%s", sanitizeValue(others[2].(string)))
|
if v, ok := others[2].(string); ok && len(v) > 0 {
|
||||||
|
fmt.Fprintf(&b, "; Domain=%s", sanitizeValue(v))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if len(others) > 3 && others[3].(bool) {
|
if len(others) > 3 {
|
||||||
fmt.Fprintf(&b, "; Secure")
|
var secure bool
|
||||||
|
switch v := others[3].(type) {
|
||||||
|
case bool:
|
||||||
|
secure = v
|
||||||
|
default:
|
||||||
|
secure = true
|
||||||
|
}
|
||||||
|
if secure {
|
||||||
|
fmt.Fprintf(&b, "; Secure")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !(len(others) > 4 && others[4].(bool) == false) {
|
if len(others) > 4 {
|
||||||
fmt.Fprintf(&b, "; HttpOnly")
|
if v, ok := others[4].(bool); ok && !v {
|
||||||
|
// HttpOnly = false
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(&b, "; HttpOnly")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
output.Context.ResponseWriter.Header().Add("Set-Cookie", b.String())
|
output.Context.ResponseWriter.Header().Add("Set-Cookie", b.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user