发表于: 2017-08-22 23:40:39
3 1224
【今日做的事情】
今天继续任务五的倒数第二步——使用DES对用户ID和登录时间加密,生成Token,放入Cookie中。拦截器里通过Cookie中判断Token的有效性来判断用户是否登录。
由于昨天实现登录验证的方法确实是太Low了,今天就重新改造了一番。
先说一下今天的思路,今天准备按比较正常的办法,在cookie中传入token,然后看token的值是否匹配来验证。
首先说说Token是什么,今天第一次接触这个名词,感觉好像还蛮厉害的,结果一搜,发现token什么也不是,就是一个字符串而已。只不过作用是用来做验证。
Tokens的优势:
无状态、可扩展
在客户端存储的Tokens是无状态的,并且能够被扩展。基于这种无状态和不存储Session信息,负载负载均衡器能够将用户信息从一个服务传到其他服务器上。
如果我们将已验证的用户的信息保存在Session中,则每次请求都需要用户向已验证的服务器发送验证信息(称为Session亲和性)。用户量大时,可能会造成一些拥堵。但是不要着急。使用tokens之后这些问题都迎刃而解,因为tokens自己hold住了用户的验证信息。
安全性
请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造)。即使在客户端使用cookie存储token,cookie也仅仅是一个存储机制而不是用于认证。不将信息存储在Session中,让我们少了对session操作。
token是有时效的,一段时间之后用户需要重新验证。我们也不一定需要等到token自动失效,token有撤回的操作,通过token revocataion可以使一个特定的token或是一组有相同认证的token无效。
可扩展性()
Tokens能够创建与其它程序共享权限的程序。例如,能将一个随便的社交帐号和自己的大号(Fackbook或是Twitter)联系起来。当通过服务登录Twitter(我们将这个过程Buffer)时,我们可以将这些Buffer附到Twitter的数据流上(we are allowing Buffer to post to our Twitter stream)。
使用tokens时,可以提供可选的权限给第三方应用程序。当用户想让另一个应用程序访问它们的数据,我们可以通过建立自己的API,得出特殊权限的tokens。
今天主要代码如下:
这就是今天改造后的controller。经过验证,这种方式成功完成了登录验证,并且属于正常的方法,不像昨天那么low爆。
现在还差拦截器没有配好,明天应该能配好拦截器。
【今日收获】
用Token令牌重构了一遍登录验证的代码,比昨天的好多了
【明日计划】
配置拦截器,完成任务五余下部分
【任务进度】
由于禅道还没修好,暂时还无法分解。
不过目前进度来看,这周内完成完全没有问题
评论