session

package module
v0.0.0-...-f6a8cac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2016 License: MIT Imports: 4 Imported by: 0

README

session Build Status

mgr := session.New(stores.NewMemory(), providers.NewCookie())

h := func(w http.ResponseWriter, req *http.Request) {
    // 在每一个Handler中调用Start()开始一个Session操作。
    sess,err :=mgr.Start(w, req)
    defer sess.Close()

    sess.Get(...)
}
http.HandleFunc("/", h)
http.ListenAndServe(":8080")

// 服务结束后,记得释放Options实例。
mgr.Close()
安装
go get github.com/issue9/session
文档

Go Walker GoDoc

版权

本项目采用MIT开源授权许可证,完整的授权说明可在LICENSE文件中找到。

Documentation

Overview

session的操作包。

当前session包的sessionid只能通过cookie传递, 所以只有在启用了cookie的浏览器上,本session包才有用。

用户可以通过实现Store接口,自行实现Session数据的存储, 具体的实现方式可以参考stores目录下的相关实例, 该包实现了一些常用的Store。

以下是一个简单的session操作示例:

mgr := session.New(stores.NewMemory(...), providers.NewCookie(...))

h := func(w http.ResponseWriter, req *http.Request) {
    // 在每一个Handler中调用Start()开始一个Session操作。
    sess,err :=mgr.Start( w, req)
    defer sess.Close()

    sess.Get(...)
}
http.HandleFunc("/", h)
http.ListenAndServe(":8080")

// 服务结束后,记得释放Options实例。
mgr.Close()

也可以多个store同时使用:

frontMgr := session.New(stores.NewMemory(), providers.NewCookie())
adminMgr := session.New(stores.NewFile(), provider.NewCookie())

frontHandler := func(w http.ResponseWriter, req *http.Request) {
    sess,err :=frontMgr.Start(w, req)
    defer sess.Close()

    sess.Get(...)
}

adminHandler := func(w http.ResponseWriter, req *http.Request) {
    sess,err :=adminMgr.Start(w, req)
    defer sess.Close()

    sess.Get(...)
}

http.HandleFunc("/front", frontHandler)
http.HandleFunc("/admin", adminHandler)
http.ListenAndServe(":88")

frontMgr.Close()
adminMgr.Close()

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

session管理。

func New

func New(store types.Store, prv types.Provider) *Manager

声明一个Manager实例。

func (*Manager) Close

func (mgr *Manager) Close() error

关闭,会自动释放关联的Store内容,即会删除所有的session数据。

func (*Manager) Start

func (mgr *Manager) Start(w http.ResponseWriter, r *http.Request) (*Session, error)

获取与当前请求相关联的session数据。 在一个Session中,不能多次调用Start()。 当然也可以把获取的Session实例保存到Context等实例中,方便之后获取。

type Session

type Session struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Session操作接口。

func (*Session) Close

func (sess *Session) Close(w http.ResponseWriter, r *http.Request) error

关闭当前的Session,相当于按顺序执行Session.Save()和Session.Free()。

func (*Session) Exists

func (sess *Session) Exists(key interface{}) bool

指定的键值是否存在。

func (*Session) Free

func (sess *Session) Free(w http.ResponseWriter, r *http.Request) error

释放当前的Session空间,但依然存在于Store中。 之后Session.Get等操作数据的函数将不在可用。 若需要同时从Store中去除,请执行Store.Delete()方法。

func (*Session) Get

func (sess *Session) Get(key interface{}) (interface{}, bool)

获取指定键名对应的值,found表示该值是否存在。

func (*Session) ID

func (sess *Session) ID() string

当前session的sessionid

func (*Session) MustGet

func (sess *Session) MustGet(key, defVal interface{}) interface{}

获取值,若键名对应的值不存在,则返回defVal。

func (*Session) Save

func (sess *Session) Save(w http.ResponseWriter, r *http.Request) error

保存当前的Session值到Store中。 Session中的数据依然存在,可以继续使用Get()等函数获取数据。

func (*Session) Set

func (sess *Session) Set(key, val interface{})

添加或是设置值。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL