1. 安裝 express-session 中間件
- 在 Express 項(xiàng)目中剪况,只需要安裝 express-session 中間件,即可在項(xiàng)目中使用 Session 認(rèn)證:
```js
? ? npm install express-session
```
2. 配置 express-session 中間件
- express-session 中間件安裝成功后番挺,需要通過 app.use() 來注冊 session 中間件,示例代碼如下:
```js
? ? // 1.導(dǎo)入 session 中間件
? ? const session = require('express-session')
? ? // 2.配置 session 中間件
? ? app.use(session(){
? ? ? ? secret: 'keyboard cat', ? // secret 屬性的值可以是任意字符串
? ? ? ? resave: false, ? ? ? ? ? ?// 固定寫法
? ? ? ? saveUninitialized: true ? // 固定寫法
? ? })
```
3. 向 session 中存數(shù)據(jù)
- 當(dāng) express-session 中間件配置成功后囱晴,即可通過 req.session 來訪問和使用 session 對象,從而存儲用戶的關(guān)鍵信息:
```js
? ? app.post('/api/login', (req, res) => {
? ? ? ? // 判斷提交的登錄信息是否正確
? ? ? ? if(req.body.username !== 'admin' || req.body.password !== '123456') {
? ? ? ? ? ? return res.send({ status: 401, msg: '登錄失敗' })
? ? ? ? }
? ? ? ? req.session.user = req.body ? ? // 將用戶信息瓢谢,存儲到 session 中
? ? ? ? req.session.islogin = true ? ? // 將用戶登錄狀態(tài)畸写,存儲到 session 中
? ? ? ? res.send({ status: 200, msg: '登錄成功' })
? ? })
```
4. 從 session 中取數(shù)據(jù)
- 可以直接從 req.session 對象上獲取之前存儲的數(shù)據(jù),示例代碼如下:
```js
? ? app.get('/api/username', (req, res) => {
? ? ? ? // 判斷用戶是否登錄
? ? ? ? if (!req.session.islogin) {
? ? ? ? ? ? return res.send({ status: 401, msg: '未登錄' })
? ? ? ? }
? ? ? ? res.send({ status: 200, msg : '已登錄', username: req.session.user.username })
? ? })
```
5. 清空 session
- 調(diào)用 req.session.destroy() 函數(shù)氓扛,即可清空服務(wù)器保存的 session 信息枯芬。
```js
? ? // 退出登錄的接口
? ? app.post('/api/logout', () => {
? ? ? ? // 清空當(dāng)前客戶端對應(yīng)的 session 信息
? ? ? ? req.session.destroy()
? ? ? ? req.send({
? ? ? ? ? ? status: 200,
? ? ? ? ? ? msg: '退出登錄成功'
? ? ? ? })
? ? })
```