cookie 存储位置:浏览器上
服务器如何告诉浏览器进行存储: Response中 “Set-Cookie “这个头信息
浏览器如何携带信息:Request 头信息:”Cookie”

客户端浏览器请求时检查Cookie头 sid
若无sid 服务器端生成一个唯一表示并且告诉浏览器你的ID是sid,浏览器以后在请求时都携带sid信息。

1.认证
给客户端分配唯一表示SID

loginuser/password 认证成功,服务器端sid 状态=1
每个请求需要登录才能访问,客户端COOKIE SID ->服务器查询状态 1=>允许操作 非1 => 跳转到登录页面

  1. session
    session存储在服务器端,和客户端的关联为sid
    浏览器sid如何告诉给服务器端:Cookie
    浏览器sid是如何分配的: 服务器端检查客户端无SID生成的一个唯一标识,Set-Cookie

Session管理是web开发的最基本认证方式

  1. func main(){
  2. http.HandleFunc("/",func(w ResponseWriter,r *Request)){
  3. // w.Header().Add("set-cookie","xxx=xxxxxx") 这种方式也可以设置cookie
  4. http.cookie()
  5. http.SetCookie(w) //也可以设置cookie
  6. }
  7. })
  8. http.ListenAndServe(":9999",nil)
  9. }

用户登录

1、会话session

  1. session服务器端存储
  2. 内存
  3. 本地磁盘文件
  4. 数据库
  5. 序列化
  6. sid=> session id
  7. set-cookie session id
  8. cookie
  9. session
  10. 配置:=>配置文件 conf/app.conf ini格式配置文件 key=values 默认在[default]配置块儿下
  11. 是否开启Session SessionOn=true/false
  12. 存储类型: SessionProvider=memory/file/mysql/redis/memcached 默认位memory
  13. 存储的位置: SessionProviderConfig
  14. 失效时间: SessionGCMaxLifetime=3600 默认3600
  15. 操作:
  16. 获取
  17. GetSession(key) interface{}
  18. 更新
  19. SetSession(key,value)
  20. 删除
  21. DelSession(key)
  22. 销毁
  23. DestorySession() 退出
  24. gob编码
  25. 自定义类型: Register()
  26. session存储数据:
  27. 1、尽量少
  28. 2、可以使用基本数据类型仅使用基本类型
  29. 3、自定义类型一定要gob注册

用户登录

  1. 1、用户名密码
  2. 2、密码加密方式(单项hash),可以使用加盐或慢性加盐算法(bcrypt)避免堡垒破解,以及记录破解
  3. 验证
  4. 修改密码
  5. 添加用户
  6. go get -u golang.org/x/crypto/bcrypt
  7. go mod 需要使用goproxy
  8. 3、登录逻辑
  9. a. 打开登录页面
  10. b. 用户输入用户名,密码点击登录
  11. 验证:name=>password hash input
  12. 成功=> 用户列表
  13. 失败=> 返回原有页面(登录页面)提示用户

beego 运行方式:

  1. dev: 开发模式(更改代码不需要重启应用)
  2. prod: 生产模式
  3. 配置文件: app.conf /RunMode=""

2、orm

文档更新时间: 2023-07-17 15:10   作者:张尚