会话(gorilla/sessions)
安装gorilla/sessions
go get -u github.com/gorilla/sessions
命令行运行以上命令。
创建存储
key = []byte("super-secret-key")
store = sessions.NewCookieStore(key)
以上代码创建了Cookie存储对象。该存储对象用于网络请求中的身份识别和信息存储。
会话处理
func login(w http.ResponseWriter, r *http.Request) {session, _ := store.Get(r, "cookie-name")session.Values["authenticated"] = truesession.Save(r, w)
}func logout(w http.ResponseWriter, r *http.Request) {session, _ := store.Get(r, "cookie-name")session.Values["authenticated"] = falsesession.Save(r, w)
}func secret(w http.ResponseWriter, r *http.Request) {session, _ := store.Get(r, "cookie-name")if auth, ok := session.Values["authenticated"].(bool); !ok || !auth {http.Error(w, "Forbidden", http.StatusForbidden)return}fmt.Fprintln(w, "The cake is a lie!")
}
以上代码包含了身份识别、信息存储和信息判断功能。
完整源码
package mainimport ("fmt""net/http""github.com/gorilla/sessions"
)var (key = []byte("super-secret-key")store = sessions.NewCookieStore(key)
)func login(w http.ResponseWriter, r *http.Request) {session, _ := store.Get(r, "cookie-name")session.Values["authenticated"] = truesession.Save(r, w)
}func logout(w http.ResponseWriter, r *http.Request) {session, _ := store.Get(r, "cookie-name")session.Values["authenticated"] = falsesession.Save(r, w)
}func secret(w http.ResponseWriter, r *http.Request) {session, _ := store.Get(r, "cookie-name")if auth, ok := session.Values["authenticated"].(bool); !ok || !auth {http.Error(w, "Forbidden", http.StatusForbidden)return}fmt.Fprintln(w, "The cake is a lie!")
}func main() {http.HandleFunc("/login", login)http.HandleFunc("/logout", logout)http.HandleFunc("/secret", secret)http.ListenAndServe(":8090", nil)
}
会话(gorilla/sessions)相关推荐
- 【GoCN酷Go推荐】会话控制利器 gorilla/sessions
推荐 gorilla/sessions 的背景 在日常 Web 应用开发过程中,需要对用户登录状态进行判断,而 HTTP 是无状态的,即不记录用户登录状态,想要得到用户登录状态得把登录状态保存下来,通 ...
- 分布式session会话Sticky Sessions
负载均衡常见问题之会话保持-粘滞会话(Sticky Sessions),stickysessions 会话保持是负载均衡最常见的问题之一,也是一个相对比较复杂的问题. 会话保持有时候又叫做粘滞会话(S ...
- go(gin框架)session底层使用redis实现(gorilla/sessions和gin-contrib/sessions)
问题描述 最近在写一个基于gin框架的demo,需要实现简单的rbac,在网上找了一个有基础功能的基本框架,Go Gin Example,框架本身集成了基本功能:日志,mysql增删改查,路由,jwt ...
- Go实战--Gorilla web toolkit使用之gorilla/sessions(iris+sessions)
生命不止,继续go go go!!! 昨天介绍了: Go实战–Gorilla web toolkit使用之gorilla/context 今天介绍gorilla/sessions: Package s ...
- Go 每日一库之 gorilla/sessions
简介 上一篇文章<Go 每日一库之 securecookie>中,我们介绍了 cookie.同时提到 cookie 有两个缺点,一是数据不宜过大,二是安全问题.session 是服务器端的 ...
- 「Go工具箱」web中的session管理,推荐使用gorilla/sessions包
在web开发中,大家一定会使用到session.在go的很多web框架中并没有集成session管理的中间件.要想使用session功能,我推荐大家使用这个包:gorilla/sessions.以下是 ...
- 路由复用器--gorilla/mux
简介 gorilla/mux是 gorilla Web 开发工具包中的路由管理库.gorilla Web 开发包是 Go 语言中辅助开发 Web 服务器的工具包.它包括 Web 服务器开发的各个方面, ...
- Go 每日一库之 gorilla/mux
简介 gorilla/mux是 gorilla Web 开发工具包中的路由管理库.gorilla Web 开发包是 Go 语言中辅助开发 Web 服务器的工具包.它包括 Web 服务器开发的各个方面, ...
- session会话保持原理
1. 什么是会话保持? 会话保持是负载均衡最常见的问题之一,也是一个相对比较复杂的问题.会话保持有时候又叫做粘滞会话(Sticky Sessions).会话保持是指在负载均衡器上的一种机制,可以识别客 ...
最新文章
- 光流 | 光流交流群
- WCF安全之ASP.NET兼容模式
- php中的解析范围符,如何合理使用php7范围解析操作符
- MySQL 增加、更新、删除
- 电子学会2022年3月份编程等级考试(scratch、pyhton)
- 第一次HACK别人的DLL
- 游侠原创:手机电子商务与社交隐私--网络安全的下一个关注点
- python玩王者荣耀皮肤碎片怎么获得_教你用Python代码免费获取王者荣耀全英雄皮肤...
- dedecms 栏目重名时,列表页dede:list调用文章数量不对的问题。
- 【转】VMware Fusion Professional 10 序列号
- Restorator软件使exe文件都不能打开,exe不支持此接口
- linux系统 浏览器安装包下载,Linux版360浏览器安装包非常大的原因
- navigator、history对象
- 目不暇接 时尚艳丽的新款苹果手机 MAC APPLE
- 彩灯控制单片c语言程序,基于51单片机的led彩灯设计。 9个灯(红绿蓝三色)。按键控制 c语言程序...
- js的初识及数据类型简介
- MAVEN下载与安装
- flask-sqlachemy note
- Eclipse Scala环境的配置
- 【C】编一程序,将两个字符串连接起来,不要用strcat函数
热门文章
- 3Com 905系列介绍
- 2020h黑苹果 y7000p_联想拯救者 篇一:联想拯救者Y7000P 2020H测评之联想电脑管家(上)...
- pandas 数据怎样实现行间计算
- uniapp vue3版本 引用color-ui的cu-custom组件问题
- mysql数据库主机名是什么_mysql数据库主机名是什么
- 洛谷-P1618 三连击(升级版)
- python初步入门_Python 入门指南
- ReactiveUI 入门
- PKI介绍及搭建Linux私有CA (SSL 示例)
- 域控服务器错误事件解决方法,求大神帮忙,域控总有事件报错,事件ID:1864 - winServer论坛 - 51CTO技术论坛_中国领先的IT技术社区...