go语言web开发框架_Iris框架讲解(六):Session的使用和控制

在实际的项目开发中,我们会经常有业务场景使用到Session功能。在iris框架中,也为我们提供了方便使用,功能齐全的Session模块。Session模块的源码目录为kataras/iris/sessions包。

Session与Cookie的区别

在学习web开发过程中,我们总会和session和cookie打交道。本节课我们学习sesion相关的知识,因此有必要先通过讲解对比一下session和cookie的区别:

  • 首先是两者的相同点。session和cookie两者都是用来存储客户的状态信息的手段。在登录、注册等动作后,可以存储相关账户的状态信息,方便程序后续跟踪及使用。
  • 其次是不同点,讨论两者的不同点我们从几个角度来总结。首先是两者的存储位置。Cookie是存储在客户端浏览器上,方便客户端请求时使用;Session存储的相关信息存储在服务器端,用于存储客户端连接的状态信息。
  • 其次,从可以存储的数据类型来看。Cookie仅仅支持存储字符串string一种数据类型,Session支持int、string、bool等多种数据类型,Session支持的数据类型更全更多。
Session对象创建

在实际的程序开发中,iris框架中可以非常方便的创建一个新的session对象。如下所示,即是session的创建:

...sessionID := "mySession"//session的创建sess := sessions.New(sessions.Config{        Cookie: sessionID,})
支持的数据类型

在上文中,我们说过session支持的数据类型要比cookie多,我们来看一下iris框架中的session所支持存储的数据类型:

//String:字符串类型session.GetString()//Int:无符号整形 及系列相关单位的同类型session.GetInt()//Boolean:布尔值类型session.GetBoolean()//Float:单精度数值类型 及系列相关单位的同类型session.GetFloat()//interface{}:接口 即任意数据结构类型session.GetFlash()

上述代码块,即列出了iris框架中所支持存储的数据类型。我们在接下来的本节课程内容中,将会演示如何进行具体使用。

Session的存储和使用

在实际的项目开发中,Session的用法非常普遍。在本节课堂中,我们通过一个模拟用户登录、登出、查询的案例来模拟Session的存储、使用、删除等操作。

具体案例如下:

app.Post("/login", func(context context.Context) {        path := context.Path()        app.Logger().Info(" 请求Path:", path)        userName := context.PostValue("name")        passwd := context.PostValue("pwd")?        if userName == "davie" && passwd == "pwd123" {            session := sess.Start(context)?            //用户名            session.Set(USERNAME, userName)            //登录状态            session.Set(ISLOGIN, true)?            context.WriteString("账户登录成功 ")?        } else {            session := sess.Start(context)            session.Set(ISLOGIN, false)            context.WriteString("账户登录失败,请重新尝试")        }    })    ...    app.Get("/logout", func(context context.Context) {        path := context.Path()        app.Logger().Info(" 退出登录 Path :", path)        session := sess.Start(context)        //删除session        session.Delete(ISLOGIN)        session.Delete(USERNAME)        context.WriteString("退出登录成功")    })    ...    app.Get("/query", func(context context.Context) {        path := context.Path()        app.Logger().Info(" 查询信息 path :", path)        session := sess.Start(context)?        isLogin, err := session.GetBoolean(ISLOGIN)        if err != nil {            context.WriteString("账户未登录,请先登录 ")            return        }?        if isLogin {            app.Logger().Info(" 账户已登录 ")            context.WriteString("账户已登录")        } else {            app.Logger().Info(" 账户未登录 ")            context.WriteString("账户未登录")        }?    })    ...

上述的代码中展示了session的使用方法,更多全部的案例代码资料在配套的课程资料中可以查看。

Session与数据库结合使用

除了Session在程序中的使用,Session还可以与数据库绑定使用,用以在停止服务时将用户状态session同步于数据库中,并进行恢复。

db, err := boltdb.New("sessions.db", 0600)if err != nil {    panic(err.Error())}?//程序中断时,将数据库关闭iris.RegisterOnInterrupt(func() {    defer db.Close()})?//session和db绑定sess.UseDatabase(db)

本节课中,我们学习了Session的操作和使用相关的内容。在后面的实际项目开发中,我们本节课学习的内容将会得到应用实践的机会。

原文地址:https://www.cnblogs.com/qfDavie/p/10622487.html

时间: 2024-11-13 05:33:39

go语言web开发框架_Iris框架讲解(六):Session的使用和控制的相关文章

Python学习笔记(1)--python语言Web开发框架web2py

Python基础 python语言Web开发框架web2py 创建工程: 工程名设为MyWeb 创建完成后运行得到: 处理静态文件 放在static目录下, 在地址栏中直接通过文件路径访问: 控制器: 在controllers下添加文件. 访问:http://127.0.0.1:8000/main/hello/hello 极客学院:http://www.jikexueyuan.com/course/201.html

Python语言Web开发框架web2py

python开发的强大的网络框架web2py,这个框架需要下载和集成. http://www.web2py.com/examples/static/web2py_src.zip

Go语言的几个Web开发框架

对比下来,Revel的资料还是比较多,我个人推荐Revel.Revel Web开源框架是一个高效的Go语言Web开发框架, 其思路完全来自 Java 的 Play Framework.https://github.com/robfig/revel特点:热编译,简单可选,同步(每个请求都创建自己的goroutine来处理).相关学习资料:一步一步学习Revel Web开源框架http://www.cnblogs.com/ztiandan/archive/2013/01/17/2864498.htm

thrift框架总结,可伸缩的跨语言服务开发框架

thrift框架总结,可伸缩的跨语言服务开发框架 前言: 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中所用到的数据传输方式包括 XML,JSON 等,然而 XML 相对体积太大,传输效率低,JSON 体积较小,新颖,但还不够完善.本文将介绍由 Facebook 开发的远程服务调用框架 Apache Thrift,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以

最好的6个Go语言Web框架

原文:Top 6 web frameworks for Go as of 2017 作者:Edward Marinescu 译者:roy 译者注:本文介绍截至目前(2017年)最好的6个Go语言Web框架.以下为译文: GO 语言爱好者的最佳Web框架 如果你是自己写一个小应用程序,那你可能不需要Web框架.但是如果你要做产品,那么你肯定需要一个好的框架. 如果你认为你有相应的知识和经验,你会自己编写所有的这些代码么?你有时间找到一个产品级的外部包来完成工作吗?你确定这与你应用程序的其它部分一致

基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍

在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章会随着技术的探讨一直写下去,不过这个系列的文章,到这里做一个总结,展示一下整体基于MVC4+EasyUI的界面效果,让大家对这款Web开发框架有一个形象的了解,界面设计以及相关思路可以借鉴提高,也可以对相关的内容进行相互探讨,共同提高. 技术特点:整个Web开发框架,界面部分采用较新的技术,包括MVC4,最新版本的EasyUI,以及zTree树形控件.Uploadify文件上传组件等模块,另外

基于MVC4+EasyUI的Web开发框架形成之旅(5)--框架总体界面介绍

在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章会随着技术的探讨一直写下去,不过这个系列的文章,到这里做一个总结,展示一下整体基于MVC4+EasyUI的界面效果,让大家对这款Web开发框架有一个形象的了解,界面设计以及相关思路可以借鉴提高,也可以对相关的内容进行相互探讨,共同提高. 技术特点:整个Web开发框架,界面部分采用较新的技术,包括MVC4,最新版本的EasyUI,以及zTree树形控件.Uploadify文件上传组件等模块,另外

karloop介绍--hello world大家好,今天为大家介绍一款非常轻量级的的web开发框架,karloop框架。使用python开发 首先我们下载karloop源码进行安装。 源码地址 下载成

大家好,今天为大家介绍一款非常轻量级的的web开发框架,karloop框架.使用python开发 首先我们下载karloop源码进行安装. 源码地址 下载成功后解压,进入解压后的路径,进入终端,运行命令:sudo python setup.py install 如果是window系统,则打开cmd,运行:python setup.py install 下载安装成功后,我们写一个hello.py 内容如下: # coding=utf-8 from karloop.KarlBaseApplicati

Go语言web框架 gin

Go语言web框架 GIN gin是go语言环境下的一个web框架, 它类似于Martini, 官方声称它比Martini有更好的性能, 比Martini快40倍, Ohhhh….看着不错的样子, 所以就想记录一下gin的学习. gin的github代码在这里: gin源码. gin的效率获得如此突飞猛进, 得益于另一个开源项目httprouter, 项目地址: httprouter源码. 下面主要记录一下gin的使用. 1 1. 安装gin 使用命令go get github.com/gin-