We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Session存储在服务器,但它并不独立使用,而是与Cookie或配合使用。
也就是说,在Cookie中存储了一个ID,服务端在接收到Cookie时对ID进行校验,只有通过校验才可以进行下一步处理,否则将让用户重新登录。
Session相对单纯的Cookie校验而言比较安全,但也有可能发生Session劫持。
cookie-session是常用来处理Session的中间件。为了保证安全性,它是强制加密的。
npm install cookie-session
示例代码:/lesson06/server.js
同其他中间件类似,cookie-session也只需要server.use方法调用,并传入配置即可:
server.use(cookieSession({ // 循环密钥,其中有若干个密钥。如果只有一个密钥,容易被客户端破解,多个密钥相对安全 keys: [ 'tVnVq4zDhDtQPGPrx2qSOSdmuYI24C', 'IUTEaA1wKoWnVDf4DspSBAjKvLWcyn', 'yC7cWHZDYoRMYawxSVDdzKQdXkZ9sE', 'Ikjk6OibzaBYiEM13Mrj8ITdb3DonG', 'uyajLZWgim4BS4SuQtH4kbTi640mWo', ], // 设置20分钟有效期,若Session丢失,过期后将无法再被使用 maxAge: 20 * 60 * 1000 }))
使用中间件后,在接口中对Session进行操作:
// 在接口中操作Session server.get('/session', (req, res, next) => { console.log(`Session: ${JSON.stringify(req.session)}`) // 每次访问/session接口,就将Session中的number值加1 if (req.session.number) { req.session.number++ } else { req.session.number = 1 } // 存储用户ID req.session.id = 'lee' res.send(`Session: ${JSON.stringify(req.session)}`) })
在浏览器中访问http://localhost:8080/session,就可以看到在页面上打印出的Session值,如Session: {"number":1,"id":"lee"}。
Session: {"number":1,"id":"lee"}
在浏览器的控制台中可以看到保存在Cookie中的Session值:
express:sess: eyJudW1iZXIiOjEsImlkIjoibGVlIn0= // Session的值 express:sess.sig: 2wiwgJGBFBrNF4HuNSECtE39i8w // 对Session值的签名,用来保护Session不被篡改
我们可以尝试在控制台中直接修改express:sess或express:sess.sig的值,刷新后Session会因为校验不通过而被重置。
express:sess
express:sess.sig
通常在项目开发中,也需要将Session保存在服务端,便于进行校验。
此时可以使用JavaScript库如express-mysql-session,将Session保存在MySQL数据库中。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
阅读更多系列文章请访问我的GitHub博客,示例代码请访问这里。
Session介绍
Session存储在服务器,但它并不独立使用,而是与Cookie或配合使用。
也就是说,在Cookie中存储了一个ID,服务端在接收到Cookie时对ID进行校验,只有通过校验才可以进行下一步处理,否则将让用户重新登录。
Session相对单纯的Cookie校验而言比较安全,但也有可能发生Session劫持。
使用cookie-session中间件操作Session
cookie-session介绍
cookie-session是常用来处理Session的中间件。为了保证安全性,它是强制加密的。
安装cookie-session
npm install cookie-session
使用cookie-session
同其他中间件类似,cookie-session也只需要server.use方法调用,并传入配置即可:
使用中间件后,在接口中对Session进行操作:
在浏览器中访问http://localhost:8080/session,就可以看到在页面上打印出的Session值,如
Session: {"number":1,"id":"lee"}
。在浏览器的控制台中可以看到保存在Cookie中的Session值:
我们可以尝试在控制台中直接修改
express:sess
或express:sess.sig
的值,刷新后Session会因为校验不通过而被重置。服务端存储Session
通常在项目开发中,也需要将Session保存在服务端,便于进行校验。
此时可以使用JavaScript库如express-mysql-session,将Session保存在MySQL数据库中。
The text was updated successfully, but these errors were encountered: