cookie
cookie 存储位置:浏览器上
服务器如何告诉浏览器进行存储: Response中 “Set-Cookie “这个头信息
浏览器如何携带信息:Request 头信息:”Cookie”
客户端浏览器请求时检查Cookie头 sid
若无sid 服务器端生成一个唯一表示并且告诉浏览器你的ID是sid,浏览器以后在请求时都携带sid信息。
使用cookie的交互流程
1.认证
给客户端分配唯一表示SID
loginuser/password 认证成功,服务器端sid 状态=1
每个请求需要登录才能访问,客户端COOKIE SID ->服务器查询状态 1=>允许操作 非1 => 跳转到登录页面
- session
session存储在服务器端,和客户端的关联为sid
浏览器sid如何告诉给服务器端:Cookie
浏览器sid是如何分配的: 服务器端检查客户端无SID生成的一个唯一标识,Set-Cookie
Session管理是web开发的最基本认证方式
cookie 的设置方法
func main(){
http.HandleFunc("/",func(w ResponseWriter,r *Request)){
// w.Header().Add("set-cookie","xxx=xxxxxx") 这种方式也可以设置cookie
http.cookie()
http.SetCookie(w) //也可以设置cookie
}
})
http.ListenAndServe(":9999",nil)
}
用户登录
1、会话session
session服务器端存储
内存
本地磁盘文件
数据库
序列化
sid=> session id
set-cookie session id
cookie
session
配置:=>配置文件 conf/app.conf ini格式配置文件 key=values 默认在[default]配置块儿下
是否开启Session SessionOn=true/false
存储类型: SessionProvider=memory/file/mysql/redis/memcached 默认位memory
存储的位置: SessionProviderConfig
失效时间: SessionGCMaxLifetime=3600 默认3600
操作:
获取
GetSession(key) interface{}
更新
SetSession(key,value)
删除
DelSession(key)
销毁
DestorySession() 退出
gob编码
自定义类型: Register()
session存储数据:
1、尽量少
2、可以使用基本数据类型仅使用基本类型
3、自定义类型一定要gob注册
用户登录
1、用户名密码
2、密码加密方式(单项hash),可以使用加盐或慢性加盐算法(bcrypt)避免堡垒破解,以及记录破解
验证
修改密码
添加用户
go get -u golang.org/x/crypto/bcrypt
go mod 需要使用goproxy
3、登录逻辑
a. 打开登录页面
b. 用户输入用户名,密码点击登录
验证:name=>password hash input
成功=> 用户列表
失败=> 返回原有页面(登录页面)提示用户
beego 运行方式:
dev: 开发模式(更改代码不需要重启应用)
prod: 生产模式
配置文件: app.conf /RunMode=""
2、orm
文档更新时间: 2023-07-17 15:10 作者:张尚