不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • GO基础

  • 面向对象

  • 并发编程

  • 常用库

  • 数据库操作

  • Beego框架

    • 01.Beego安装
    • 02.Beego创建项目
    • 03.获取参数传值
    • 04.路由
    • 05.模板基本使用
    • 06.Model封装公共方法
    • 07.Config参数配置
    • 08.Cookie
    • 09.Session
      • 01.session介绍
        • 1.1 session概念
        • 1.2 beego中的session
      • 02.Session 的使用
        • 2.1 配置session
        • 2.2 设置session
        • 2.3 获取session
      • 03.session存储到Redis
        • 3.1 安装依赖库
        • 3.2 配置redis远程连接
        • 3.3 main.go配置
      • 04.session存储到MySQL
        • 4.1 安装依赖库
        • 3.2 mysql 创建表
        • 3.3 main.go配置
    • 10.日志模块
    • 11.上传文件
    • 12.GORM操作
    • 13.GORM查询
    • 14.GORM 关联查询
    • 15.GORM原生SQL
  • Beego商城

  • GIN框架

  • GIN论坛

  • 微服务

  • 设计模式

  • Go
  • Beego框架
xiaonaiqiang
2021-05-24
目录

09.Session

# 01.session介绍

# 1.1 session概念

  • session 是另一种记录客户状态的机制

  • 不同的是 Cookie 保存在客户端浏览器中,而 session保存在服务器上。

  • Session 的工作流程

    • 当客户端浏览器第一次访问服务器并发送请求时,服务器端会创建一个 session 对象
    • 生成一个类似于 key,value 的键值对, 然后将 key(cookie)返回到浏览器(客户)端
    • 浏览器下次再访问时,携带 key(cookie),找到对应的 session(value)

# 1.2 beego中的session

  • beego 内置了 session 模块,目前 session 模块支持的后端引擎包括
  • memory、cookie、file、mysql、redis、couchbase、memcache、postgres
  • 用户也可以根据相应的 interface 实现自己的引擎。
  • beego 中使用 session 相当方便,只要在 main 入口函数中设置如下
beego.BConfig.WebConfig.Session.SessionOn = true
1
  • 或者通过配置文件配置如下
sessionon = true
1

# 02.Session 的使用

# 2.1 配置session

  • conf\app.conf
# 开启session
sessionon = true
# 设置 cookies 的名字,默认名是beegosessionID
SessionName="itying"
# session过期时间:1000s
sessiongcmaxlifetime=1000
# 默认的 key 是 beegoserversessionkey
SessionHashKey="mybeegosession"
1
2
3
4
5
6
7
8

# 2.2 设置session

func (c *UserController) UsersSetSession() {
	c.SetSession("username", "张三")
	c.Ctx.WriteString("UsersSetSession")
}
1
2
3
4

# 2.3 获取session

func (c *UserController) UsersGetSession() {
	username := c.GetSession("username")
	fmt.Println(username)              // 张三
	c.Ctx.WriteString("UsersGetSession")
}
1
2
3
4
5

# 03.session存储到Redis

  • 如果我们的程序部署到了多台服务器,这个时候把 session 保存到服务器就没法实现 session的共享
  • 如果要实现 session 的共享,我们可以把 session 保存到数据库里面
  • 可以选择mysql、redis、couchbase、memcache、postgres 这些引擎

# 3.1 安装依赖库

go get -u github.com/astaxie/beego/session/redis
1

# 3.2 配置redis远程连接

root@dev:~# vim /etc/redis/redis.conf 
bind 0.0.0.0
protected-mode no
root@dev:~# systemctl restart redis
1
2
3
4

# 3.3 main.go配置

package main
import (
	_ "github.com/astaxie/beego/session/redis"
)

func main() {
	beego.BConfig.WebConfig.Session.SessionProvider = "redis"
	beego.BConfig.WebConfig.Session.SessionProviderConfig = "192.168.56.100:6379"
	beego.Run()
}
1
2
3
4
5
6
7
8
9
10
  • 注:此时session就会存储到redis中

# 04.session存储到MySQL

# 4.1 安装依赖库

go get -u github.com/astaxie/beego/session/mysql
1

# 3.2 mysql 创建表

CREATE TABLE `session` (
   `session_key` char(64) NOT NULL,
   `session_data` blob,
   `session_expiry` int(11) unsigned NOT NULL,
   PRIMARY KEY (`session_key`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;
1
2
3
4
5
6
7

# 3.3 main.go配置

package main
import (
  _ "github.com/astaxie/beego/session/mysql"
)

func main() {
	beego.BConfig.WebConfig.Session.SessionProvider = "mysql"
	beego.BConfig.WebConfig.Session.SessionProviderConfig = "username:password@protocol(address)/dbname?param=value"
	beego.Run()
}
1
2
3
4
5
6
7
8
9
10
  • 注:此时session就会存储到mysql中

  • 更多使用参考 (opens new window)

上次更新: 2024/3/13 15:35:10
08.Cookie
10.日志模块

← 08.Cookie 10.日志模块→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式