GO开发中遇到的问题

在初始化Mysql和Redis时,使用`:=`可能会创建局部变量而非全局变量,导致变量未正确初始化。在使用gorilla/session处理Session时,需理解Session存储在服务器端的安全机制,每个用户的Session名应相同,数据存储在map中,通过键值对获取所需信息,如username。
摘要由CSDN通过智能技术生成

作用域问题

在初始化Mysql,Redis等组件的时候,经常需要定义全局变量,这个时候会有一个作用域的小坑,如下图,:=作为一个语法糖,会创建一个新的局部变量,而全局变量不会生效,这个时候在另一个包中打印一下RDB==nil发现还是false,但实际上RDB并未被正确初始化,GoLand里也标为绿色了,值得后续注意

Session问题

开发后台的过程中被session卡了很久,用了gorilla/session这个包,存在redis里,一开始完全没搞懂session的作用在哪,只知道cookie不安全,用session加密存在服务器端安全性得到了保障。

 一开始的时候我把每个session都命名成了username,但是有一个邮件确认的功能需要确认已经登录的用户的username这下直接给卡住了,gorilla/redis在Save session的时候直接会存在浏览器的cookie里,但是注意这里存的name就是上面New时候的name,我还傻乎乎的用gin.Context的Cookie找name字段怎么也找不到。所以其实数据是存在session中的,而每个session的名字都应该是相同的(对于一个浏览器,或者说一个用户来说,毕竟每个人用的都是自己的电脑),取username的时候直接在session的数据里取(是一个map,直接按key找就可以)就能得到想要的值了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值