github.com/astaxie/beego@v1.12.3/session/README.md (about)

     1  session
     2  ==============
     3  
     4  session is a Go session manager. It can use many session providers. Just like the `database/sql` and `database/sql/driver`.
     5  
     6  ## How to install?
     7  
     8  	go get github.com/astaxie/beego/session
     9  
    10  
    11  ## What providers are supported?
    12  
    13  As of now this session manager support memory, file, Redis and MySQL.
    14  
    15  
    16  ## How to use it?
    17  
    18  First you must import it
    19  
    20  	import (
    21  		"github.com/astaxie/beego/session"
    22  	)
    23  
    24  Then in you web app init the global session manager
    25  	
    26  	var globalSessions *session.Manager
    27  
    28  * Use **memory** as provider:
    29  
    30  		func init() {
    31  			globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid","gclifetime":3600}`)
    32  			go globalSessions.GC()
    33  		}
    34  
    35  * Use **file** as provider, the last param is the path where you want file to be stored:
    36  
    37  		func init() {
    38  			globalSessions, _ = session.NewManager("file",`{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"./tmp"}`)
    39  			go globalSessions.GC()
    40  		}
    41  
    42  * Use **Redis** as provider, the last param is the Redis conn address,poolsize,password:
    43  
    44  		func init() {
    45  			globalSessions, _ = session.NewManager("redis", `{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"127.0.0.1:6379,100,astaxie"}`)
    46  			go globalSessions.GC()
    47  		}
    48  		
    49  * Use **MySQL** as provider, the last param is the DSN, learn more from [mysql](https://github.com/go-sql-driver/mysql#dsn-data-source-name):
    50  
    51  		func init() {
    52  			globalSessions, _ = session.NewManager(
    53  				"mysql", `{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"username:password@protocol(address)/dbname?param=value"}`)
    54  			go globalSessions.GC()
    55  		}
    56  
    57  * Use **Cookie** as provider:
    58  
    59  		func init() {
    60  			globalSessions, _ = session.NewManager(
    61  				"cookie", `{"cookieName":"gosessionid","enableSetCookie":false,"gclifetime":3600,"ProviderConfig":"{\"cookieName\":\"gosessionid\",\"securityKey\":\"beegocookiehashkey\"}"}`)
    62  			go globalSessions.GC()
    63  		}
    64  
    65  
    66  Finally in the handlerfunc you can use it like this
    67  
    68  	func login(w http.ResponseWriter, r *http.Request) {
    69  		sess := globalSessions.SessionStart(w, r)
    70  		defer sess.SessionRelease(w)
    71  		username := sess.Get("username")
    72  		fmt.Println(username)
    73  		if r.Method == "GET" {
    74  			t, _ := template.ParseFiles("login.gtpl")
    75  			t.Execute(w, nil)
    76  		} else {
    77  			fmt.Println("username:", r.Form["username"])
    78  			sess.Set("username", r.Form["username"])
    79  			fmt.Println("password:", r.Form["password"])
    80  		}
    81  	}
    82  
    83  
    84  ## How to write own provider?
    85  
    86  When you develop a web app, maybe you want to write own provider because you must meet the requirements.
    87  
    88  Writing a provider is easy. You only need to define two struct types 
    89  (Session and Provider), which satisfy the interface definition. 
    90  Maybe you will find the **memory** provider is a good example.
    91  
    92  	type SessionStore interface {
    93  		Set(key, value interface{}) error     //set session value
    94  		Get(key interface{}) interface{}      //get session value
    95  		Delete(key interface{}) error         //delete session value
    96  		SessionID() string                    //back current sessionID
    97  		SessionRelease(w http.ResponseWriter) // release the resource & save data to provider & return the data
    98  		Flush() error                         //delete all data
    99  	}
   100  	
   101  	type Provider interface {
   102  		SessionInit(gclifetime int64, config string) error
   103  		SessionRead(sid string) (SessionStore, error)
   104  		SessionExist(sid string) bool
   105  		SessionRegenerate(oldsid, sid string) (SessionStore, error)
   106  		SessionDestroy(sid string) error
   107  		SessionAll() int //get all active session
   108  		SessionGC()
   109  	}
   110  
   111  
   112  ## LICENSE
   113  
   114  BSD License http://creativecommons.org/licenses/BSD/