白屏
好家伙昨晚刚弄完登陆注册板块今天写完拦截器部分一运行就白屏了,照着源代码一部分一部分看,中间改了些pom文件,但其实似乎没必要。最后过了一会儿再运行就万事Ok了,也不知道咋回事。中间有以为是数据库连接过多引起的白屏,但重启Mysql后也并没有解决。所以…迷
ticket失效
拦截器写完后想试试登录后显示用户ID效果,但无论怎么试都无法成功,甚至是用了官方源码(?现在想想实际上应该是可以跑通的,迷)后来跟着视频中间一部分debug展示的步骤,一步一步查看,发现中间prehandle的部分在通过cookie中存储的ticket值去数据库查找元组,并通过user_id将关联的user表元组用户查找出来最后加入threadlocaluser中。这样最后到postHandle才能提取出当前用户最后返回给前端。
随着一步一步debug,我发现ticket提取用户的时候出错了,与数据库中的记录对不上,本来应该是userid结果提取成了id,再去看看LoginTicketDAO类查看结果发现select_fields写错了
我哭
更改登录验证逻辑
源代码中关于ticket验证有些奇怪的地方,默认是每次登录都默认增加一条ticket记录,实际上从login_ticket表中查询是否有有效的ticket较好
因为login_ticket表关于同一用户可能有多条记录,所以需要选出最新的一条(通过最大的id号来选取),至于查询某列最大值这个写法,似乎又有更多选择了(留个坑)
用户数据安全性
- HTTPS注册页
- 公钥加密私钥解密
- 用户密码salt
- token有效期
- 单一平台的单点登录,登录IP异常检验
- 用户状态的权限判断
- 添加验证码机制,防止爆破和批量注册