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

Go语言之高级篇beego框架之cookie与session

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

1、cookie的用法

this.Ctx.SetCookie("name", name, maxage, "/")
this.Ctx.SetCookie("pwd", Md5([]byte(pwd)), maxage, "/")

this.Ctx.GetCookie

2、session控制

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

beego 中使用 session 相当方便,只要在 main 入口函数中设置如下:

beego.BConfig.WebConfig.Session.SessionOn = true

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

sessionon = true

session 有几个方便的方法:

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

session 操作主要有设置 session、获取 session、删除 session。

3、cookie与session用法

示例:

routers/router.go

package routers

import (
	"web/controllers"
	"github.com/astaxie/beego"
)

func init() {
    beego.Router("/", &controllers.MainController{})
    beego.Router("/test_input", &controllers.TestInputController{}, "get:Get;post:Post")
    beego.Router("/test_login", &controllers.TestLoginController{}, "get:Login;post:Post")
}

verws/main.go

package main

import (
	_ "web/routers"
	"github.com/astaxie/beego"
)

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

controllers/testInput.go

package controllers

import (
	"github.com/astaxie/beego"
)

type TestInputController struct {
	beego.Controller
}

type User struct{
	Username string
	Password string
}

func (c *TestInputController) Get(){
	//id := c.GetString("id")
	//c.Ctx.WriteString("<html>" + id + "<br/>")

	//name := c.Input().Get("name")
	//c.Ctx.WriteString(name + "</html>")
	name := c.GetSession("name")
	password := c.GetSession("password")

	if nameString, ok := name.(string); ok && nameString != ""{
		c.Ctx.WriteString("Name:" + name.(string) + " password:" + password.(string))
	}else{
		c.Ctx.WriteString(`<html><form action="http://127.0.0.1:8080/test_input" method="post"> 
							<input type="text" name="Username"/>
							<input type="password" name="Password"/>
							<input type="submit" value="提交"/>
					   </form></html>`)
	}
}


func (c *TestInputController) Post(){
	u := User{}
	if err:=c.ParseForm(&u) ; err != nil{
		//process error
	}

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

controllers/testLogin.go

package controllers

import (
	"github.com/astaxie/beego"
)

type TestLoginController struct {
	beego.Controller
}

type UserInfoV2 struct{
	Username string
	Password string
}

func (c *TestLoginController) Login(){
	name := c.Ctx.GetCookie("name")
	password := c.Ctx.GetCookie("password")

	//do verify work
	if name != ""{
		c.Ctx.WriteString("Username:" + name + " Password:" + password)
	}else{
		c.Ctx.WriteString(`<html><form action="http://127.0.0.1:8080/test_login" method="post"> 
							<input type="text" name="Username"/>
							<input type="password" name="Password"/>
							<input type="submit" value="提交"/>
					   </form></html>`)
	}
}


func (c *TestLoginController) Post(){
	u := UserInfoV2{}
	if err:=c.ParseForm(&u) ; err != nil{
		//process error
	}

	c.Ctx.SetCookie("name", u.Username, 100, "/")
	c.Ctx.SetCookie("password", u.Password, 100, "/")
	c.SetSession("name", u.Username)
	c.SetSession("password", u.Password)
	c.Ctx.WriteString("Username:" + u.Username + " Password:" + u.Password)
}

  

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
go 错误处理发布时间:2022-07-10
下一篇:
go使用json包Marshal方法得到异常结果[123125]发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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