安装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)相关推荐

  1. 【GoCN酷Go推荐】会话控制利器 gorilla/sessions

    推荐 gorilla/sessions 的背景 在日常 Web 应用开发过程中,需要对用户登录状态进行判断,而 HTTP 是无状态的,即不记录用户登录状态,想要得到用户登录状态得把登录状态保存下来,通 ...

  2. 分布式session会话Sticky Sessions

    负载均衡常见问题之会话保持-粘滞会话(Sticky Sessions),stickysessions 会话保持是负载均衡最常见的问题之一,也是一个相对比较复杂的问题. 会话保持有时候又叫做粘滞会话(S ...

  3. go(gin框架)session底层使用redis实现(gorilla/sessions和gin-contrib/sessions)

    问题描述 最近在写一个基于gin框架的demo,需要实现简单的rbac,在网上找了一个有基础功能的基本框架,Go Gin Example,框架本身集成了基本功能:日志,mysql增删改查,路由,jwt ...

  4. Go实战--Gorilla web toolkit使用之gorilla/sessions(iris+sessions)

    生命不止,继续go go go!!! 昨天介绍了: Go实战–Gorilla web toolkit使用之gorilla/context 今天介绍gorilla/sessions: Package s ...

  5. Go 每日一库之 gorilla/sessions

    简介 上一篇文章<Go 每日一库之 securecookie>中,我们介绍了 cookie.同时提到 cookie 有两个缺点,一是数据不宜过大,二是安全问题.session 是服务器端的 ...

  6. 「Go工具箱」web中的session管理,推荐使用gorilla/sessions包

    在web开发中,大家一定会使用到session.在go的很多web框架中并没有集成session管理的中间件.要想使用session功能,我推荐大家使用这个包:gorilla/sessions.以下是 ...

  7. 路由复用器--gorilla/mux

    简介 gorilla/mux是 gorilla Web 开发工具包中的路由管理库.gorilla Web 开发包是 Go 语言中辅助开发 Web 服务器的工具包.它包括 Web 服务器开发的各个方面, ...

  8. Go 每日一库之 gorilla/mux

    简介 gorilla/mux是 gorilla Web 开发工具包中的路由管理库.gorilla Web 开发包是 Go 语言中辅助开发 Web 服务器的工具包.它包括 Web 服务器开发的各个方面, ...

  9. session会话保持原理

    1. 什么是会话保持? 会话保持是负载均衡最常见的问题之一,也是一个相对比较复杂的问题.会话保持有时候又叫做粘滞会话(Sticky Sessions).会话保持是指在负载均衡器上的一种机制,可以识别客 ...

最新文章

  1. 光流 | 光流交流群
  2. WCF安全之ASP.NET兼容模式
  3. php中的解析范围符,如何合理使用php7范围解析操作符
  4. MySQL 增加、更新、删除
  5. 电子学会2022年3月份编程等级考试(scratch、pyhton)
  6. 第一次HACK别人的DLL
  7. 游侠原创:手机电子商务与社交隐私--网络安全的下一个关注点
  8. python玩王者荣耀皮肤碎片怎么获得_教你用Python代码免费获取王者荣耀全英雄皮肤...
  9. dedecms 栏目重名时,列表页dede:list调用文章数量不对的问题。
  10. 【转】VMware Fusion Professional 10 序列号
  11. Restorator软件使exe文件都不能打开,exe不支持此接口
  12. linux系统 浏览器安装包下载,Linux版360浏览器安装包非常大的原因
  13. navigator、history对象
  14. 目不暇接 时尚艳丽的新款苹果手机 MAC APPLE
  15. 彩灯控制单片c语言程序,基于51单片机的led彩灯设计。 9个灯(红绿蓝三色)。按键控制 c语言程序...
  16. js的初识及数据类型简介
  17. MAVEN下载与安装
  18. flask-sqlachemy note
  19. Eclipse Scala环境的配置
  20. 【C】编一程序,将两个字符串连接起来,不要用strcat函数

热门文章

  1. 3Com 905系列介绍
  2. 2020h黑苹果 y7000p_联想拯救者 篇一:联想拯救者Y7000P 2020H测评之联想电脑管家(上)...
  3. pandas 数据怎样实现行间计算
  4. uniapp vue3版本 引用color-ui的cu-custom组件问题
  5. mysql数据库主机名是什么_mysql数据库主机名是什么
  6. 洛谷-P1618 三连击(升级版)
  7. python初步入门_Python 入门指南
  8. ReactiveUI 入门
  9. PKI介绍及搭建Linux私有CA (SSL 示例)
  10. 域控服务器错误事件解决方法,求大神帮忙,域控总有事件报错,事件ID:1864 - winServer论坛 - 51CTO技术论坛_中国领先的IT技术社区...