作用域问题
在初始化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找就可以)就能得到想要的值了