zoukankan      html  css  js  c++  java
  • 4. Beego 框架之cookie与session

    cookie是存储在客户端的,用于标识客户身份的!

    what is session

    session 是存储在服务端,也是用于客户身份标识,用于跟踪用户会话。

    BeeGo session保存方式

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

    beego 启用session

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

    beego.BConfig.WebConfig.Session.SessionOn = true
    

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

    sessionon = true
    

    session 有几个方便的方法

    1. SetSession(name string,value interface{})
    2. GetSession(name string,) interface{}
    3. DelSession(name string)
    4. SessionRegenerateID()
    5. DestorySession()
    

    拿代码来说话

    router.go的代码

    package routers
    
    import (
    	"WEB/controllers"
    
    	"github.com/astaxie/beego"
    )
    
    func init() {
    	beego.Router("/test_login", &controllers.TestLoginController{}, "post:PostData;get:Login")   // 唯一添加了这条
    }
    
    

    controllers的文件夹

    testlogin.go
    // testlogin
    package controllers
    
    import (
    	"github.com/astaxie/beego"
    )
    
    type TestLoginController struct {
    	beego.Controller
    }
    
    func (c *TestLoginController) SelfTest() {
    	c.Ctx.WriteString("this is myself  controller!")
    }
    
    func (c *TestLoginController) Login() {
    	name := c.Ctx.GetCookie("name")
    	password := c.Ctx.GetCookie("password")
    
    	if name != "" {
    		c.Ctx.WriteString("Username:" + name + "password:" + password)
    	} else {
    		formData := `<html><form action="/test_login" method="post">
    		 <input type="text" name="Username">
    		 <input type="password" name="Password">
    		<input type="submit" value="post">
    			</html>
    		`
    		c.Ctx.WriteString(formData)
    	}
    }
    
    func (c *TestLoginController) PostData() {
    	u := User{}
    	if err := c.ParseForm(&u); err != nil {
    
    	}
    	c.Ctx.SetCookie("name", u.Username, 100, "/")  // 设置cookie
    	c.Ctx.SetCookie("password", u.Password, 100, "/")  // 设置cookie
    	c.Ctx.WriteString("username:" + u.Username + "   password:" + u.Password)
    }
    
    

    我们通过c.Ctx.SetCookie设置cookie后,你在浏览器输入http://ip:port/test_login,填写用户密码提交以后,再次访问test_login,那么是不需填写用户密码的了,因为已经保存了session与cookie。

  • 相关阅读:
    Oracle学习笔记--Oracle启动过程归纳整理
    Oracle 11g rac开启归档
    Oracle 11g rac中关于crsctl stop cluster/crs/has的区别
    Linux环境下安装MySQL 5.7.28
    将root用户权限赋予普通用户
    用Navicat Premium 连接mysql数据库时报错 -- 1130 Host xxxx is not allowed to connect to this MySQL server
    PCoIP vs HDX (CITRIX ICA)远程访问协议对比
    systemctl
    组播查询命令
    默认路由ip default-network和ip route 0.0.0.0 0.0.0.0区别
  • 原文地址:https://www.cnblogs.com/liaojiafa/p/8137317.html
Copyright © 2011-2022 走看看