这里主要总结express中的token相关问题。
首先要知道我们为什么要使用token?
我的理解是,当用户完成登录之后会访问其他的页面,在这个过程中就会涉及到用户访问的权限,比如能不能发表文章能不能修改资料之类的。如果不用token和session之类的工具,就意味着每次权限验证我们就需要用用户的密码来验证。所以为了保存用户的登录状态就提出了token和session这两种形式。
session
用户通过req.session.admin = req.admin
这种形式将用户的名称存入session
中,然后系统会生成一个sessionId
存入cookie
中。当浏览器下一次请求时,session
会一起传给服务器。这是就可以通过req.session.admin
来取值了。
在express下实现:
|
|
app.js
|
|
routes/userLogin.js
|
|
token
相比session
,token
的安全性更高。如果把session
比作学校用的饭卡的话,那么token
就是信用卡,每次刷饭卡的时候是不需要输密码的,燃鹅,每次刷信用卡的时候还需要输入密码才能成功输入。这样看来是不是信用卡(token)比较安全呢。session
和token
就是这样的。
express中的token
长这样:
|
|
由.
将它分成了三个部分:
header(base64后的)、payload(base64后的)、signature(签名,即密钥)
想要了解它们的具体内容,可以自己去搜,网上很多这方面的解释。
对于express中token
的使用:
|
|
app.js
|
|
routes/userLogin.js
|
|
routes/users.js
|
|
测试:
我测试的时候用的postman
cookie和session
顺便附上这是网上的摘取的cookie和session的区别:
1、session在服务器端,cookie在客户端(浏览器);
2、session默认被存在服务器的一个文件里,而不是内存;
3、session的运行依赖于session id,而session id是存在cookie中的。也就是说,如果浏览器禁用cookie,那么session也会失效(但是可以通过其他方式实现,比如在url中传递session id);
4、session可以存放在文件、数据库和内存中;
5、用户验证这种场合一般会用session。