发表于: 2017-07-15 10:46:44
1 1085
今天完成的:
Task7,小课堂
收获啊:
1.用户选择保存密码时,我将生成的token保存在本地,验证时服务端根据uuid和登录时间在进行一次加密
,两者比对实现登录。这种方法服务端要多进行一次加密,浪费性能,可以将token放进redis里(常见做法)。
2.1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
了解了Token的意义后,我们就更明确的知道为什么要用他了。
token的生成策略太多了,直接生成的cookie只能起到验证的作用,可逆加密没什么安全性,需要额外加一些比如根据session的,根据ip地址的,设备mac地址的等等。通过这些条件判断。
3.短信通道的攻防策略
1.前端加图文验证码校验
2.限制单个手机号每日接收短信次数和时间间隔,限制ip(已实现,每个ip每天只能发送5条短信)
3.改进注册流程,第一种,可以从前端写入指令,只允许在官网主页跳转入注册页面;
第二种方法是对注册流程进行分步,先进行账户密码设置,设置成功后才可以再进行下一步的短信验证。
4.使用token对短信发送者进行唯一性识别
4.看了师弟的日报,发现单元测试也可以事务回滚,测试不污染DB了
springTest(defaultRollback设置事务回滚true)
spring-trans
遇到的问题:
1.感觉以前写的任务不够仔细,虽然功能都能实现,但细节上差了一些。把所有任务都做完之后要重新理解一遍。另外感觉任务里有一些东西很冷门比如tiles框架和Tuscany。都几年没更新了,肯定不会常用。
2.有个bug,用户注册后头像与当前用户不匹配,应该在注册后销毁上个用户的session,并使用当前注册用户session。从cookie读出来的用户头像未显示。
3.redis更新逻辑没做处理,读出来的学生列表是脏数据。
4.通过ip限制用户注册应该加一个缓存的时间限制,改这个要重新封装redis的工具类了。
明天的计划:
Task8
评论