【GoWeb开发实战】Beego之Session

Beego之Session

beego内置了session模块,目前session模块支持的后端引擎包括memory、cookie、file、 mysq|、 redis、 couchbase、 memcache、 postgres. 用户也可以根据相应的interface实现自己的引擎。

 

一、Session的使用

Beego默认关闭Session,要想使用也相当方便,可以通过代码的方式,只要在main入口函数中设置如下:

beego.BConfig.WebConfig.Session.SessionOn = true

或者通过配置文件配置如下:

sessionon = true

二、session 的常用方法:

  • SetSession(name string, value interface{})
  • GetSession(name string) interface{}
  • DelSession(name string)
  • SessionRegeneratelD()
  • DestroySession)

三、实例操作

我们借助于之前的项目案例。

3.1 设置main()方法,打开session

修改main.go中的main()方法:

func main() {
    beego.BConfig.WebConfig.Session.SessionOn = true
    beego.Run()
}

3.2 设置session

修改testlogin.go文件,我们在post表单登录的时候,设置cookie的同时,也设置session:

func (c *TestLoginController) Post() {
    u := UserInfo{}
    if err := c.ParseForm(&u); err != nil {
        log.Panic(err)
    }
    //设置cookie
    c.Ctx.SetCookie("username",u.Username,100,"/")
    c.Ctx.SetCookie("password",u.Password,100,"/")

    //设置session
    c.SetSession("username",u.Username)
    c.SetSession("password",u.Password)

    c.Ctx.WriteString("Username:" + u.Username + ",Password:" + u.Password)

}

3.3 获取session

修改testinput.go文件,我们在get访问testinput的时候,获取session:

func (c *TestInputController) TestInputGet() {
    //name := c.GetString("name")
    //c.Ctx.WriteString("<html>"+name+"<br/>")
    //
    //idstr:=c.Input().Get("id")
    //c.Ctx.WriteString(idstr+"</html>")
    //
    //id,_:=strconv.Atoi(idstr)
    //fmt.Println(id)

    //读取session
    username := c.GetSession("username")
    password := c.GetSession("password")
    if nameString, ok := username.(string); ok && nameString != "" {
        c.Ctx.WriteString("Username:" + username.(string) + ",Password:" + password.(string))
    } else {

        c.Ctx.WriteString(`<html><form action="http://127.0.0.1:9527/testinput" method="post">
                                    用户名:<input type ="text" name="Username" />
                                    <br/>&nbsp&nbsp&nbsp码:<input type="password" name="pwd">
                                    <br/>
                                    <input type="submit" value="提交">

                                </form></html>`)
    }
}

然后重新启动项目,并打开浏览器输入:http://127.0.0.1:9527/testlogin

因为首次登录,浏览器运行如下:

接下来,我们输入用户名和密码:

此时,已经通过post请求,执行对应的Post()方法,设置了cookie和session。

接下来我们在浏览器中输入:http://127.0.0.1:9527/testinput

浏览器运行结果如下:

 

因为可以获取到session,所以直接显示了登录信息。

3.4 删除Session

c.GetSession(“username”),如果没有获取到session,会返回nil,和cookie不一样,getCookie返回空字符串。

  1. Session是一段保存在服务器上的一段信息,当客户端第一次访问服务器时创建。同时也创建一个名为beegosessionID,值为创建Session的id的Cookie
  2. 这个beegosessionID对应服务器中的一个Session对象,通过它就可以获取到保存用户信息的Session

通过c.DelSession("password")和c.DestroySession()均可以删除Session,其区别在于DelSession删除指定的Session, DestroySession删除所有session。

另外,可以通过beego.BConfig.WebConfig.Session.SessionName 设置,如果在配置文件和主函数都设置了,主函数优先,因为beego先加载配置文件后执行主函数,所以主函数中设置的内容回对配置文件中设置的内容进行覆盖。

转载于:https://www.cnblogs.com/Paul-watermelon/articles/11035020.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值