加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang web编程:简单的会话(使用sessions包)

发布时间:2020-12-16 19:01:41 所属栏目:大数据 来源:网络整理
导读:网站不能根据来访的ip来确定来访者的身份,ip加端口号也不行.一般都是通过用户名密码来确定用户身份的,但用户也不能每次访问网页时都手动输入一次用户名和密码啊,这样太累了. 一个最简单的想法就是让浏览器帮我们输入,但是http协议本身没有夹带用户名密
网站不能根据来访的ip来确定来访者的身份,ip加端口号也不行.一般都是通过用户名密码来确定用户身份的,但用户也不能每次访问网页时都手动输入一次用户名和密码啊,这样太累了.
一个最简单的想法就是让浏览器帮我们输入,但是http协议本身没有夹带用户名密码的功能,而且有时我们的需求又不只是用户名和密码这么简单,比如说我们还想在浏览器和网页服务器之间传递用户的id,上次访问网站的时间等,每个网站的要求都不一样,所谓众口难调.
现在的做法是,浏览器允许网页服务器在浏览器里存一小段数据,什么数据都行,你自己的格式自己去解析就好了.具体的做法是,浏览器第一次访问服务器时,服务器应答中就会包含需要浏览器请求的数据,浏览器收到服务器的应答,并把数据保存起来.当浏览器再次访问服务器时,浏览器就在请求里包含这段数据.由于这段数据不是我们的主要业务,只不过是我们进行主业务时的一点小插曲,故称这段数据为cookie,是甜甜圈,小点心,以区别于正餐.
下面我们以一段代码来表示这个过程,为简化,我们只要求保存用户名,整个过程就是:
1.浏览器访问网页,服务器返回请求并要求浏览器保存一个用户名.(这个用户名一般是更早阶段要求用户填写一个form传给服务器的.
2. 浏览器保存这个用户名.
3.浏览器再次访问这个网页,并带上这个用户名.
4.浏览器知道是这个用户访问的,就打印一句hello.

代码在测试的时候要访问两次浏览器,第一次浏览器上没有显示,第二次会显示hello.
代码如下:
?
www.usr.cc
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1 package main
2 import (
3 "github.com/gorilla/sessions"
4 "net/http"
5 "io"
6 )
7
8 var store = sessions.NewCookieStore ( []byte ( "something-very-secret" ) )
9
10 func pageHandler ( w http.ResponseWriter , r * http.Request ) {
11 session , _ : = store.Get ( r , "get_name_session" )
12 name , ok : = session.Values[ "name" ]. ( string )
13 session.Values[ "name" ] = "Dean"
14 session.Save ( r , w )
15 if ok {
16 io.WriteString ( w , "hello," + string ( name ) ) ;
17 }
18 }
19
20
21 func main ( ) {
22 http.HandleFunc ( "/" , pageHandler )
23 }

扩展阅读

  1. 请问下如何试通过51的P2.4端口通过编程的方式在产生一个500KHZ的时钟信号供0809使用?
  2. C++编程思想(pdf电子书)
  3. autodesk的一道编程面试题,大家试试吧
  4. C语言可否实现面向对象编程?如何实现面向对象编程?
  5. DSP 混合编程
  6. 开放出版:许式伟《Go语言编程》样章“面向对象编程”
  7. Google Go语言近况 Android平台工作加速
  8. 6410中断控制
  9. LLVM 与 Clang 介绍
  10. socket编程所需头文件讲解

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读