• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

sessions: Go语言的Cookie Session包,支持Redis等多种存储引擎,可通用Go语言的net/h ...

原作者: [db:作者] 来自: 网络 收藏 邀请

Sessions

Go语言的Sessions库。使用Storage接口来实现数据存储层的抽象化,可通过实现该接口来将数据存储到Memcached、Redis、LevelDB、RocksDB、MySQL等数据库。还支持值类型转换的链式方法,有助于减少代码量。

已内置的数据存储器:

  • Redis(支持v6)

Tsing框架结合使用的示例

package mainimport (	"log"	"net/http"	"time"	"github.com/dxvgef/sessions"	"github.com/dxvgef/sessions/storage/redis"	"github.com/dxvgef/tsing")// 定义session引擎var engine *sessions.Enginefunc main() {	log.SetFlags(log.Ltime | log.Lshortfile)	// 创建session引擎	if err := newSessEngine(); err != nil {		log.Fatalln(err.Error())	}	app := tsing.New(&tsing.Config{})		// 定义一个路由处理器用于写入session	app.Router.GET("/", func(ctx *tsing.Context) error {		// 启用session		session, err := engine.Use(ctx.Request, ctx.ResponseWriter)		if err != nil {			log.Println(err.Error())			return err		}		// 写入值		err = session.Put("test", "ok")		return err	})	// 定义一个路由处理器用于演示sessions的其它操作	app.Router.GET("/test", func(ctx *tsing.Context) error {		// 启用session		session, err := engine.Use(ctx.Request, ctx.ResponseWriter)		if err != nil {			log.Println(err.Error())			return err		}		// 读取string类型的值		var result sessions.Result		result = session.Get("test")		if result.Err() != nil {			log.Println(result.Err())			return result.Err()		}		ctx.ResponseWriter.WriteHeader(200)		ctx.ResponseWriter.Write(result.Bytes())		return nil	})	// 启动HTTP服务	if err := http.ListenAndServe(":8080", app); err != nil {		log.Fatal(err.Error())	}}// 创建session引擎func newEngine() error {	var (		err     error		storage sessions.Storage	)	// 创建存储器	storage, err = redis.New(&redis.Config{		Addr: "127.0.0.1:6379", // redis server的地址		Prefix: "sess",         // redis的key前缀		Username: "",           // redis 6支持的用户名		Password: "",           // redis的密码		DB: 0,                  // redis的库	})	if err != nil {		return err	}	// 创建session引擎	engine, err = sessions.New(&sessions.Config{		Key:         "sessionid", // cookie中的Session ID的键名,默认为"sessionid"		HTTPOnly:    false,       // 仅允许HTTP读取,JS无法读取		Domain:      "",          // 作用域名,默认为空		Path:        "",          // 作用路径,默认为空		IdleTimeout: 20 * 60,     // 空闲超时时间(秒)		Secure:      false,       // 仅在HTTPS协议中有效	}, storage)	if err != nil {		return err	}	return nil}

更多示例见/test/目录中的单元测试文件


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SimpleFramework: 一个简单而性能高于CI的php MVC框架发布时间:2022-02-13
下一篇:
UnPHP: 轻量级的PHP框架,已迁移至:发布时间:2022-02-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap