您的位置:首页 > 编程语言 > Go语言

golang实战使用gin+xorm搭建go语言web框架restgo详解9 session、日志、鉴权、验证码等

2018-02-19 11:05 1601 查看

9.1 session

Session模块可选择很多,我们集成了github.com/tommy351/gin-sessions,在main函数中,我们使用如下方法开启sessionstore := sessions.NewCookieStore([]byte(cfg.Session["name"]))
router.Use(sessions.Middleware(cfg.Session["name"],store))
 
如果需要修改session配置,可以修改app配置文件#sessionID标识字符串,对标PHP的SESSIONID,java的JSESSIONID
restgo.session.name=GSESSIONID
#session过期时间以秒为单位,0表示访问结束时过期
restgo.session.timelive=3600

9.2 验证码

我们集成了一个图片验证码,位置restgo/Captcha.go,该文件提供验证码渲染方法loadVerify方法和验证码校验方法ChecjVerify,该方案基于session,用户可以自行集成图片验证码方案.func LoadVerify(ctx *gin.Context) {
   d := make([]byte, 4)
   s :=NewLen(4)
   ss := ""
   d = []byte(s)
   for v := range d {
      d[v] %= 10
      ss += strconv.FormatInt(int64(d[v]), 32)
   }
   session := sessions.Get(ctx)
   session.Set("___verify",ss)
   session.Save()
   NewImage(d, 100, 40).WriteTo(ctx.Writer)

}
func CheckVerify(ctx *gin.Context,code string) bool{
   session := sessions.Get(ctx)
   v := session.Get("___verify")
   session.Delete("___verify")
   session.Save()
   return v== code
}
 

9.3 缓存

缓存分为内部缓存和第三方缓存机制,对于简单的业务,可以直接使用内部map进行缓存,对于比较复杂的系统,建议采用第三方缓存设备.第三方缓存方案很多,典型的如redis,memcache等。对于缓存选型需要考虑到的点在于分布式和连接池以及参数配置等因数
l 连接池,go-redis已经支持连接池
l 参数配置,可以在app配置文件中进行配置
#redis服务器地址
restgo.redis.host=localhost
#redis端口
restgo.redis.port=3306
#redis 密码
restgo.redis.passwd=$^siwe2i23i^(12
#使用的数据库
restgo.redis.db=0
通过LoadCfg方法获取配置参数

9.4 鉴权

鉴权需要用户根据自己的业务进行扩展,我们已经提供了一个Demo,位于restgo/Auth.go

9.5 日志

系统集成了log4go日志系统,主要配置参数为filepath,用来指定配置文件路径
#log4g日志配置文件路径地址
restgo.logger.filepath=config/log4g.xml
配置文件初始化在main函数中restgo.Configuration(cfg.Logger["filepath"])
 
日志管理模块位于restgo/Logger.go中,当前提供Debug方法和Error方法,用户可以根据需要进行扩充func Debug(arg0 interface{}, args ...interface{}) {
   l4g.Debug(arg0, args)
}
func Error(arg0 interface{}, args ...interface{}) {
   l4g.Error(arg0, args)
}
用户也可以使用gin提供的日志记录方法

本文源代码源代码获取地址 https://github.com/winlion/restgo

待提供源代码清单

10.1 restgo后台管理框架

https://github.com/winlion/restgo-admin

10.天天任务清单小程序
https://github.com/winlion/dailytask

10.工业大数据采集
10.restgo cms 
10.restgo 千人大群

golang实战使用gin+xorm搭建go语言web框架restgo详解1.1 go语言的困境

golang实战使用gin+xorm搭建go语言web框架restgo详解1.2 我要做什么

golang实战使用gin+xorm搭建go语言web框架restgo详解2 框架基本架构

golang实战使用gin+xorm搭建go语言web框架restgo详解3 系统常用配置参数

golang实战使用gin+xorm搭建go语言web框架restgo详解4 路由配置

golang实战使用gin+xorm搭建go语言web框架restgo详解5 控制器C

golang实战使用gin+xorm搭建go语言web框架restgo详解5.2 跳转和重定向

golang实战使用gin+xorm搭建go语言web框架restgo详解5.3 资源控制器

golang实战使用gin+xorm搭建go语言web框架restgo详解5.4 控制器参数绑定

golang实战使用gin+xorm搭建go语言web框架restgo详解5.5 控制器模型绑定

golang实战使用gin+xorm 搭建 go语言web框架restgo搭建详解5.6 控制器参数校验

Golang go语言整合gin+xorm 搭建 web框架restgo搭建详解5.7 控制器数据响应

golang实战使用gin+xorm搭建go语言web框架restgo详解5.9 控制器controller编程

golang实战使用gin+xorm搭建go语言web框架restgo详解6.1 模型M和Orm

golang实战使用gin+xorm搭建go语言web框架restgo详解6.4 推荐编程方式

golang实战使用gin+xorm搭建go语言web框架restgo详解7 视图层V

golang实战使用gin+xorm搭建go语言web框架restgo详解8 关于模板

golang实战使用gin+xorm搭建go语言web框架restgo详解9 session、日志、鉴权

作者简介:胡文林,持续创业者,长期从事技术开源工作。微信号jiepool-winlion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐