本人最近用gulp+ nodejs+mongodb写了一个小项目。关于权限验证这个问题,查了很多资料,也思考了很久。下面写出了几个自己实验过的方法,基本还是安全可靠的。
(1)种cookie的方法。
简单的说就是第一次判断登录成功返回登录结果时就为responce添加Set-Cookie参数,然后下次访问的时候http协议会自动携带上该cookie,可以通过cookie是否存在来判断用户是否有权限。该方法的优点是前端较为方便,什么都不用做,http协议会自动携带cookie。缺点是安全性相对较低。
Nodejs代码:
res.cookie('username', username)
(2)设置token,该方法较为复杂一点,但是安全性更好。
Token是后端设置的一个经过加密之后的数据(关于加密,可以自行去查阅一下资料,这里就不多说了) 往headers 注入一个自定义的字段,将token传给前端 。
Nodejs代码:
res.header('X-Access-Token', token)
res.cookie('username', username)
由前端token写在localStroage里,然后每次发协议请求数据的时候,都在header里加上该字段,后端则判断时候携带了token以及token的值是否正确来判断用户权限。该方 法的优点是安全性更高,缺点就是没那么便利了。
(3)种token,算是以上两种办法优点的综合。由后端生成token后,添加Set-Cookie参数然后交由http协议每次发出请求时自动携带上该token,交由后端判断。
Nodejs代码:
res.cookie('token', token)
res.cookie('username', username)
以上只是个人的总结,以及个人的理解。如有不正确的地方还请指出,本人及时改正。