2249d745 by astaxie

session support secure set

1 parent f9ed74a9
...@@ -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)
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!