remove pkg directory;
remove build directory; remove githook directory;
This commit is contained in:
166
adapter/session/session.go
Normal file
166
adapter/session/session.go
Normal file
@@ -0,0 +1,166 @@
|
||||
// Copyright 2014 beego Author. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Package session provider
|
||||
//
|
||||
// Usage:
|
||||
// import(
|
||||
// "github.com/astaxie/beego/session"
|
||||
// )
|
||||
//
|
||||
// func init() {
|
||||
// globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "cookieLifeTime": 3600, "providerConfig": ""}`)
|
||||
// go globalSessions.GC()
|
||||
// }
|
||||
//
|
||||
// more docs: http://beego.me/docs/module/session.md
|
||||
package session
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/astaxie/beego/server/web/session"
|
||||
)
|
||||
|
||||
// Store contains all data for one session process with specific id.
|
||||
type Store interface {
|
||||
Set(key, value interface{}) error // set session value
|
||||
Get(key interface{}) interface{} // get session value
|
||||
Delete(key interface{}) error // delete session value
|
||||
SessionID() string // back current sessionID
|
||||
SessionRelease(w http.ResponseWriter) // release the resource & save data to provider & return the data
|
||||
Flush() error // delete all data
|
||||
}
|
||||
|
||||
// Provider contains global session methods and saved SessionStores.
|
||||
// it can operate a SessionStore by its id.
|
||||
type Provider interface {
|
||||
SessionInit(gclifetime int64, config string) error
|
||||
SessionRead(sid string) (Store, error)
|
||||
SessionExist(sid string) bool
|
||||
SessionRegenerate(oldsid, sid string) (Store, error)
|
||||
SessionDestroy(sid string) error
|
||||
SessionAll() int // get all active session
|
||||
SessionGC()
|
||||
}
|
||||
|
||||
// SLogger a helpful variable to log information about session
|
||||
var SLogger = NewSessionLog(os.Stderr)
|
||||
|
||||
// Register makes a session provide available by the provided name.
|
||||
// If Register is called twice with the same name or if driver is nil,
|
||||
// it panics.
|
||||
func Register(name string, provide Provider) {
|
||||
session.Register(name, &oldToNewProviderAdapter{
|
||||
delegate: provide,
|
||||
})
|
||||
}
|
||||
|
||||
// GetProvider
|
||||
func GetProvider(name string) (Provider, error) {
|
||||
res, err := session.GetProvider(name)
|
||||
if adt, ok := res.(*oldToNewProviderAdapter); err == nil && ok {
|
||||
return adt.delegate, err
|
||||
}
|
||||
|
||||
return &newToOldProviderAdapter{
|
||||
delegate: res,
|
||||
}, err
|
||||
}
|
||||
|
||||
// ManagerConfig define the session config
|
||||
type ManagerConfig session.ManagerConfig
|
||||
|
||||
// Manager contains Provider and its configuration.
|
||||
type Manager session.Manager
|
||||
|
||||
// NewManager Create new Manager with provider name and json config string.
|
||||
// provider name:
|
||||
// 1. cookie
|
||||
// 2. file
|
||||
// 3. memory
|
||||
// 4. redis
|
||||
// 5. mysql
|
||||
// json config:
|
||||
// 1. is https default false
|
||||
// 2. hashfunc default sha1
|
||||
// 3. hashkey default beegosessionkey
|
||||
// 4. maxage default is none
|
||||
func NewManager(provideName string, cf *ManagerConfig) (*Manager, error) {
|
||||
m, err := session.NewManager(provideName, (*session.ManagerConfig)(cf))
|
||||
return (*Manager)(m), err
|
||||
}
|
||||
|
||||
// GetProvider return current manager's provider
|
||||
func (manager *Manager) GetProvider() Provider {
|
||||
return &newToOldProviderAdapter{
|
||||
delegate: (*session.Manager)(manager).GetProvider(),
|
||||
}
|
||||
}
|
||||
|
||||
// SessionStart generate or read the session id from http request.
|
||||
// if session id exists, return SessionStore with this id.
|
||||
func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (Store, error) {
|
||||
s, err := (*session.Manager)(manager).SessionStart(w, r)
|
||||
return &NewToOldStoreAdapter{
|
||||
delegate: s,
|
||||
}, err
|
||||
}
|
||||
|
||||
// SessionDestroy Destroy session by its id in http request cookie.
|
||||
func (manager *Manager) SessionDestroy(w http.ResponseWriter, r *http.Request) {
|
||||
(*session.Manager)(manager).SessionDestroy(w, r)
|
||||
}
|
||||
|
||||
// GetSessionStore Get SessionStore by its id.
|
||||
func (manager *Manager) GetSessionStore(sid string) (Store, error) {
|
||||
s, err := (*session.Manager)(manager).GetSessionStore(sid)
|
||||
return &NewToOldStoreAdapter{
|
||||
delegate: s,
|
||||
}, err
|
||||
}
|
||||
|
||||
// GC Start session gc process.
|
||||
// it can do gc in times after gc lifetime.
|
||||
func (manager *Manager) GC() {
|
||||
(*session.Manager)(manager).GC()
|
||||
}
|
||||
|
||||
// SessionRegenerateID Regenerate a session id for this SessionStore who's id is saving in http request.
|
||||
func (manager *Manager) SessionRegenerateID(w http.ResponseWriter, r *http.Request) Store {
|
||||
s := (*session.Manager)(manager).SessionRegenerateID(w, r)
|
||||
return &NewToOldStoreAdapter{
|
||||
delegate: s,
|
||||
}
|
||||
}
|
||||
|
||||
// GetActiveSession Get all active sessions count number.
|
||||
func (manager *Manager) GetActiveSession() int {
|
||||
return (*session.Manager)(manager).GetActiveSession()
|
||||
}
|
||||
|
||||
// SetSecure Set cookie with https.
|
||||
func (manager *Manager) SetSecure(secure bool) {
|
||||
(*session.Manager)(manager).SetSecure(secure)
|
||||
}
|
||||
|
||||
// Log implement the log.Logger
|
||||
type Log session.Log
|
||||
|
||||
// NewSessionLog set io.Writer to create a Logger for session.
|
||||
func NewSessionLog(out io.Writer) *Log {
|
||||
return (*Log)(session.NewSessionLog(out))
|
||||
}
|
||||
Reference in New Issue
Block a user