Commit ee889e99 authored by slene's avatar slene Committed by asta.xie

skip cookie args when value is nil

parent d8b9db8d
...@@ -98,38 +98,56 @@ func (output *BeegoOutput) Cookie(name string, value string, others ...interface ...@@ -98,38 +98,56 @@ func (output *BeegoOutput) Cookie(name string, value string, others ...interface
} }
} }
} }
// the settings below
// Path, Domain, Secure, HttpOnly
// can use nil skip set
// default "/"
if len(others) > 1 { if len(others) > 1 {
if v, ok := others[1].(string); ok && len(v) > 0 { if v, ok := others[1].(string); ok && len(v) > 0 {
fmt.Fprintf(&b, "; Path=%s", sanitizeValue(v)) fmt.Fprintf(&b, "; Path=%s", sanitizeValue(v))
} else {
fmt.Fprintf(&b, "; Path=%s", '/')
} }
} else {
fmt.Fprintf(&b, "; Path=%s", "/")
} }
// default empty
if len(others) > 2 { if len(others) > 2 {
if v, ok := others[2].(string); ok && len(v) > 0 { if v, ok := others[2].(string); ok && len(v) > 0 {
fmt.Fprintf(&b, "; Domain=%s", sanitizeValue(v)) fmt.Fprintf(&b, "; Domain=%s", sanitizeValue(v))
} }
} }
// default empty
if len(others) > 3 { if len(others) > 3 {
var secure bool var secure bool
switch v := others[3].(type) { switch v := others[3].(type) {
case bool: case bool:
secure = v secure = v
default: default:
secure = true if others[3] != nil {
secure = true
}
} }
if secure { if secure {
fmt.Fprintf(&b, "; Secure") fmt.Fprintf(&b, "; Secure")
} }
} }
// default true
httponly := true
if len(others) > 4 { if len(others) > 4 {
if v, ok := others[4].(bool); ok && !v { if v, ok := others[4].(bool); ok && !v || others[4] == nil {
// HttpOnly = false // HttpOnly = false
} else { httponly = false
fmt.Fprintf(&b, "; HttpOnly")
} }
} }
if httponly {
fmt.Fprintf(&b, "; HttpOnly")
}
output.Context.ResponseWriter.Header().Add("Set-Cookie", b.String()) output.Context.ResponseWriter.Header().Add("Set-Cookie", b.String())
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment