1、cookie的用法

  1. this.Ctx.SetCookie("name", name, maxage, "/")
  2. this.Ctx.SetCookie("pwd", Md5([]byte(pwd)), maxage, "/")
  3.  
  4. this.Ctx.GetCookie

2、session控制

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

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

  1. beego.BConfig.WebConfig.Session.SessionOn = true

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

  1. 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

  1. package routers
  2.  
  3. import (
  4. "web/controllers"
  5. "github.com/astaxie/beego"
  6. )
  7.  
  8. func init() {
  9. beego.Router("/", &controllers.MainController{})
  10. beego.Router("/test_input", &controllers.TestInputController{}, "get:Get;post:Post")
  11. beego.Router("/test_login", &controllers.TestLoginController{}, "get:Login;post:Post")
  12. }

verws/main.go

  1. package main
  2.  
  3. import (
  4. _ "web/routers"
  5. "github.com/astaxie/beego"
  6. )
  7.  
  8. func main() {
  9. beego.BConfig.WebConfig.Session.SessionOn = true
  10. beego.Run()
  11. }

controllers/testInput.go

  1. package controllers
  2.  
  3. import (
  4. "github.com/astaxie/beego"
  5. )
  6.  
  7. type TestInputController struct {
  8. beego.Controller
  9. }
  10.  
  11. type User struct{
  12. Username string
  13. Password string
  14. }
  15.  
  16. func (c *TestInputController) Get(){
  17. //id := c.GetString("id")
  18. //c.Ctx.WriteString("<html>" + id + "<br/>")
  19.  
  20. //name := c.Input().Get("name")
  21. //c.Ctx.WriteString(name + "</html>")
  22. name := c.GetSession("name")
  23. password := c.GetSession("password")
  24.  
  25. if nameString, ok := name.(string); ok && nameString != ""{
  26. c.Ctx.WriteString("Name:" + name.(string) + " password:" + password.(string))
  27. }else{
  28. c.Ctx.WriteString(`<html><form action="http://127.0.0.1:8080/test_input" method="post">
  29. <input type="text" name="Username"/>
  30. <input type="password" name="Password"/>
  31. <input type="submit" value="提交"/>
  32. </form></html>`)
  33. }
  34. }
  35.  
  36. func (c *TestInputController) Post(){
  37. u := User{}
  38. if err:=c.ParseForm(&u) ; err != nil{
  39. //process error
  40. }
  41.  
  42. c.Ctx.WriteString("Username:" + u.Username + " Password:" + u.Password)
  43. }

controllers/testLogin.go

  1. package controllers
  2.  
  3. import (
  4. "github.com/astaxie/beego"
  5. )
  6.  
  7. type TestLoginController struct {
  8. beego.Controller
  9. }
  10.  
  11. type UserInfoV2 struct{
  12. Username string
  13. Password string
  14. }
  15.  
  16. func (c *TestLoginController) Login(){
  17. name := c.Ctx.GetCookie("name")
  18. password := c.Ctx.GetCookie("password")
  19.  
  20. //do verify work
  21. if name != ""{
  22. c.Ctx.WriteString("Username:" + name + " Password:" + password)
  23. }else{
  24. c.Ctx.WriteString(`<html><form action="http://127.0.0.1:8080/test_login" method="post">
  25. <input type="text" name="Username"/>
  26. <input type="password" name="Password"/>
  27. <input type="submit" value="提交"/>
  28. </form></html>`)
  29. }
  30. }
  31.  
  32. func (c *TestLoginController) Post(){
  33. u := UserInfoV2{}
  34. if err:=c.ParseForm(&u) ; err != nil{
  35. //process error
  36. }
  37.  
  38. c.Ctx.SetCookie("name", u.Username, 100, "/")
  39. c.Ctx.SetCookie("password", u.Password, 100, "/")
  40. c.SetSession("name", u.Username)
  41. c.SetSession("password", u.Password)
  42. c.Ctx.WriteString("Username:" + u.Username + " Password:" + u.Password)
  43. }

  

Go语言之高级篇beego框架之cookie与session的更多相关文章

  1. Go语言之高级篇beego框架安装与使用

    一.beego框架 1.beego框架简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计 ...

  2. Go语言之高级篇beego框架之layui框架应用

    1.layui前端框架 参考地址:https://www.layui.com

  3. Go语言之高级篇beego框架之配置beego环境

    1.配置beego环境 进入部署目录中 软件部署目录: 把要部署的软件代码,放在src目录下面. 启动项目

  4. Go语言之高级篇Beego框架之爬虫项目实战

    一.爬虫项目 1.爬虫基础 a.网页上面会有相同的数据 b.去重处理 布隆过滤器哈希存储 c.标签匹配: 正则表达式beautiful soup或lxml这种标签提取库 d.动态内容 phantomj ...

  5. Go语言之高级篇beego框架之config、httplib、context

    一.httplib 1.配置文件解析 这是一个用来解析文件的库,它的设计思路来自于 database/sql,目前支持解析的文件格式有 ini.json.xml.yaml,可以通过如下方式进行安装: ...

  6. Go语言之高级篇beego框架之view

    1.基本语法 go统一使用了{{ 和 }}作为左右标签,没有其它的标签符号. 如果你想要修改为其它符号,可以修改配置文件. 使用.来访问当前位置的上下文 使用$来引用当前模板根级的上下文 2.使用方法 ...

  7. Go语言之高级篇beego框架之controller调用model

    一.controller调用model 开发规范,就该把对数据库的操作写在model文件夹中. 示例: views/main.go package main import ( _ "web/ ...

  8. Go语言之高级篇beego框架之model设计构造查询

    一.model设计构造查询 QueryBuilder 提供了一个简便,流畅的 SQL 查询构造器.在不影响代码可读性的前提下用来快速的建立 SQL 语句. QueryBuilder 在功能上与 ORM ...

  9. Go语言之高级篇beego框架之模型(Models)

    一.模型(Models) 1.beego-orm的相关特性 支持 Go 的所有类型存储 -轻松上手,采用简单的 CRUD 风格 -自动 Join 关联表 跨数据库兼容查询 允许直接使用 SQL 查询/ ...

随机推荐

  1. react之shouldComponentUpdate简单定制数据更新

    import React from 'react' class Demo extends React.Component{ constructor(props){ super(props) this. ...

  2. Python 索引迭代

    1.使用enumerate函数 L = ['Adam', 'Lisa', 'Bart', 'Paul'] for index, name in enumerate(L):     print inde ...

  3. IntelliJ IDEA像Eclipse一样打开多个项目(转)

    转自: 海涛zht666   IntelliJ IDEA像Eclipse一样打开多个项目 我们做项目实际中经常会遇到这样的情况,创建一个common项目(Maven项目)作为公用项目,common中有 ...

  4. centos java tomcat 中文乱码解决办法

    现象: cenos 部署java web 程序 ,java类中有中文 出现乱码现象 即使使用: System.getProperty("中文") 控制台都出现  ??????  乱 ...

  5. JS高级 - 面向对象5(继承,引用)

    <script type="text/javascript"> //------------------Person类 //(Person)的构造函数 function ...

  6. SSD(single shot multibox detector)算法及Caffe代码详解[转]

    转自:AI之路 这篇博客主要介绍SSD算法,该算法是最近一年比较优秀的object detection算法,主要特点在于采用了特征融合. 论文:SSD single shot multibox det ...

  7. 异常Cannot get a text value from a numeric cell

    POI操作Excel时偶尔会出现Cannot get a text value from a numeric cell的异常错误. 异常原因:Excel数据Cell有不同的类型,当我们试图从一个数字类 ...

  8. 【AtCoder】ARC082

    C - Together 用一个数组记一下一个数给它本身,左右贡献都是1,看看哪个数的总贡献最大 #include <bits/stdc++.h> #define fi first #de ...

  9. Codeforces Round #321 (Div. 2) E - Kefa and Watch

    题目大意:给你一个由0-9组成的字符串,有m个询问,两种操作,第一种将l到r的字符全部变成c,第二种问l到r这段 字符串的循环节是不是d. 思路:首先我们要知道怎么判断字符串的循环节的长度是不是d,如 ...

  10. php 代码中的箭头“ ->”是什么意思

    类是一个复杂数据类型,这个类型的数据主要有属性.方法两种东西. 属性其实是一些变量,可以存放数据,存放的数据可以是整数.字符串,也可以是数组,甚至是类. 方法实际上是一些函数,用来完成某些功能. 引用 ...