Go语言之高级篇beego框架之cookie与session
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)
- }
Go语言之高级篇beego框架之cookie与session的更多相关文章
- Go语言之高级篇beego框架安装与使用
一.beego框架 1.beego框架简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计 ...
- Go语言之高级篇beego框架之layui框架应用
1.layui前端框架 参考地址:https://www.layui.com
- Go语言之高级篇beego框架之配置beego环境
1.配置beego环境 进入部署目录中 软件部署目录: 把要部署的软件代码,放在src目录下面. 启动项目
- Go语言之高级篇Beego框架之爬虫项目实战
一.爬虫项目 1.爬虫基础 a.网页上面会有相同的数据 b.去重处理 布隆过滤器哈希存储 c.标签匹配: 正则表达式beautiful soup或lxml这种标签提取库 d.动态内容 phantomj ...
- Go语言之高级篇beego框架之config、httplib、context
一.httplib 1.配置文件解析 这是一个用来解析文件的库,它的设计思路来自于 database/sql,目前支持解析的文件格式有 ini.json.xml.yaml,可以通过如下方式进行安装: ...
- Go语言之高级篇beego框架之view
1.基本语法 go统一使用了{{ 和 }}作为左右标签,没有其它的标签符号. 如果你想要修改为其它符号,可以修改配置文件. 使用.来访问当前位置的上下文 使用$来引用当前模板根级的上下文 2.使用方法 ...
- Go语言之高级篇beego框架之controller调用model
一.controller调用model 开发规范,就该把对数据库的操作写在model文件夹中. 示例: views/main.go package main import ( _ "web/ ...
- Go语言之高级篇beego框架之model设计构造查询
一.model设计构造查询 QueryBuilder 提供了一个简便,流畅的 SQL 查询构造器.在不影响代码可读性的前提下用来快速的建立 SQL 语句. QueryBuilder 在功能上与 ORM ...
- Go语言之高级篇beego框架之模型(Models)
一.模型(Models) 1.beego-orm的相关特性 支持 Go 的所有类型存储 -轻松上手,采用简单的 CRUD 风格 -自动 Join 关联表 跨数据库兼容查询 允许直接使用 SQL 查询/ ...
随机推荐
- react之shouldComponentUpdate简单定制数据更新
import React from 'react' class Demo extends React.Component{ constructor(props){ super(props) this. ...
- Python 索引迭代
1.使用enumerate函数 L = ['Adam', 'Lisa', 'Bart', 'Paul'] for index, name in enumerate(L): print inde ...
- IntelliJ IDEA像Eclipse一样打开多个项目(转)
转自: 海涛zht666 IntelliJ IDEA像Eclipse一样打开多个项目 我们做项目实际中经常会遇到这样的情况,创建一个common项目(Maven项目)作为公用项目,common中有 ...
- centos java tomcat 中文乱码解决办法
现象: cenos 部署java web 程序 ,java类中有中文 出现乱码现象 即使使用: System.getProperty("中文") 控制台都出现 ?????? 乱 ...
- JS高级 - 面向对象5(继承,引用)
<script type="text/javascript"> //------------------Person类 //(Person)的构造函数 function ...
- SSD(single shot multibox detector)算法及Caffe代码详解[转]
转自:AI之路 这篇博客主要介绍SSD算法,该算法是最近一年比较优秀的object detection算法,主要特点在于采用了特征融合. 论文:SSD single shot multibox det ...
- 异常Cannot get a text value from a numeric cell
POI操作Excel时偶尔会出现Cannot get a text value from a numeric cell的异常错误. 异常原因:Excel数据Cell有不同的类型,当我们试图从一个数字类 ...
- 【AtCoder】ARC082
C - Together 用一个数组记一下一个数给它本身,左右贡献都是1,看看哪个数的总贡献最大 #include <bits/stdc++.h> #define fi first #de ...
- Codeforces Round #321 (Div. 2) E - Kefa and Watch
题目大意:给你一个由0-9组成的字符串,有m个询问,两种操作,第一种将l到r的字符全部变成c,第二种问l到r这段 字符串的循环节是不是d. 思路:首先我们要知道怎么判断字符串的循环节的长度是不是d,如 ...
- php 代码中的箭头“ ->”是什么意思
类是一个复杂数据类型,这个类型的数据主要有属性.方法两种东西. 属性其实是一些变量,可以存放数据,存放的数据可以是整数.字符串,也可以是数组,甚至是类. 方法实际上是一些函数,用来完成某些功能. 引用 ...