session support secure set
Showing
1 changed file
with
8 additions
and
3 deletions
| ... | @@ -44,15 +44,16 @@ type Manager struct { | ... | @@ -44,15 +44,16 @@ type Manager struct { |
| 44 | cookieName string //private cookiename | 44 | cookieName string //private cookiename |
| 45 | provider Provider | 45 | provider Provider |
| 46 | maxlifetime int64 | 46 | maxlifetime int64 |
| 47 | options []interface{} | ||
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | func NewManager(provideName, cookieName string, maxlifetime int64, savePath string) (*Manager, error) { | 50 | func NewManager(provideName, cookieName string, maxlifetime int64, savePath string, options ...interface{}) (*Manager, error) { |
| 50 | provider, ok := provides[provideName] | 51 | provider, ok := provides[provideName] |
| 51 | if !ok { | 52 | if !ok { |
| 52 | return nil, fmt.Errorf("session: unknown provide %q (forgotten import?)", provideName) | 53 | return nil, fmt.Errorf("session: unknown provide %q (forgotten import?)", provideName) |
| 53 | } | 54 | } |
| 54 | provider.SessionInit(maxlifetime, savePath) | 55 | provider.SessionInit(maxlifetime, savePath) |
| 55 | return &Manager{provider: provider, cookieName: cookieName, maxlifetime: maxlifetime}, nil | 56 | return &Manager{provider: provider, cookieName: cookieName, maxlifetime: maxlifetime, options: options}, nil |
| 56 | } | 57 | } |
| 57 | 58 | ||
| 58 | //get Session | 59 | //get Session |
| ... | @@ -61,11 +62,15 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se | ... | @@ -61,11 +62,15 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se |
| 61 | if err != nil || cookie.Value == "" { | 62 | if err != nil || cookie.Value == "" { |
| 62 | sid := manager.sessionId() | 63 | sid := manager.sessionId() |
| 63 | session, _ = manager.provider.SessionRead(sid) | 64 | session, _ = manager.provider.SessionRead(sid) |
| 65 | secure := false | ||
| 66 | if len(manager.options) > 0 { | ||
| 67 | secure = manager.options[0].(bool) | ||
| 68 | } | ||
| 64 | cookie := http.Cookie{Name: manager.cookieName, | 69 | cookie := http.Cookie{Name: manager.cookieName, |
| 65 | Value: url.QueryEscape(sid), | 70 | Value: url.QueryEscape(sid), |
| 66 | Path: "/", | 71 | Path: "/", |
| 67 | HttpOnly: true, | 72 | HttpOnly: true, |
| 68 | Secure: false} | 73 | Secure: secure} |
| 69 | //cookie.Expires = time.Now().Add(time.Duration(manager.maxlifetime) * time.Second) | 74 | //cookie.Expires = time.Now().Add(time.Duration(manager.maxlifetime) * time.Second) |
| 70 | http.SetCookie(w, &cookie) | 75 | http.SetCookie(w, &cookie) |
| 71 | r.AddCookie(&cookie) | 76 | r.AddCookie(&cookie) | ... | ... |
-
Please register or sign in to post a comment