sessionmanager is a golang session manager. It can use session for many providers.Just like the `database/sql` and `database/sql/driver`.

##How to install

	go get

##how many providers support
Now this sessionmanager support memory/file/redis/mysql

##How do we use it?

first you must import it

	import (

then in you web app init the globalsession manager
	var globalSessions *session.Manager

use memory as providers:

	func init() {
		globalSessions, _ = session.NewManager("memory", "gosessionid", 3600,"")
		go globalSessions.GC()

use mysql as providers,the last param is the DNS, learn more from [mysql]( 

	func init() {
		globalSessions, _ = session.NewManager("mysql", "gosessionid", 3600,"username:password@protocol(address)/dbname?param=value")
		go globalSessions.GC()

use file as providers,the last param is the path where to store the file:

	func init() {
		globalSessions, _ = session.NewManager("file", "gosessionid", 3600,"./tmp")
		go globalSessions.GC()

use redis as providers,the last param is the redis's conn address:

	func init() {
		globalSessions, _ = session.NewManager("redis", "gosessionid", 3600,"")
		go globalSessions.GC()

at last in the handlerfunc you can use it like this

	func login(w http.ResponseWriter, r *http.Request) {
		sess := globalSessions.SessionStart(w, r)
		defer sess.SessionRelease()
		username := sess.Get("username")
		if r.Method == "GET" {
			t, _ := template.ParseFiles("login.gtpl")
			t.Execute(w, nil)
		} else {
			fmt.Println("username:", r.Form["username"])
			sess.Set("username", r.Form["username"])
			fmt.Println("password:", r.Form["password"])

##How to write own provider
When we develop a web app, maybe you want to write a provider because you must meet the requirements.

Write a provider is so easy. You only define two struct type(Session and Provider),which satisfy the interface definition.Maybe The memory provider is a good example for you.

	type SessionStore 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()                  // release the resource
	type Provider interface {
		SessionInit(maxlifetime int64, savePath string) error
		SessionRead(sid string) (SessionStore, error)
		SessionDestroy(sid string) error


BSD License

Imports 2 package(s) ΒΆ