美文网首页
在 Express 中使用 Session 认证

在 Express 中使用 Session 认证

作者: 聆风者 | 来源:发表于2022-12-04 08:36 被阅读0次

1. 安装 express-session 中间件

- 在 Express 项目中,只需要安装 express-session 中间件,即可在项目中使用 Session 认证:

```js

    npm install express-session

```

2. 配置 express-session 中间件

- express-session 中间件安装成功后,需要通过 app.use() 来注册 session 中间件,示例代码如下:

```js

    // 1.导入 session 中间件

    const session = require('express-session')

    // 2.配置 session 中间件

    app.use(session(){

        secret: 'keyboard cat',   // secret 属性的值可以是任意字符串

        resave: false,            // 固定写法

        saveUninitialized: true   // 固定写法

    })

```

3. 向 session 中存数据

- 当 express-session 中间件配置成功后,即可通过 req.session 来访问和使用 session 对象,从而存储用户的关键信息:

```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     // 将用户登录状态,存储到 session 中

        res.send({ status: 200, msg: '登录成功' })

    })

```

4. 从 session 中取数据

- 可以直接从 req.session 对象上获取之前存储的数据,示例代码如下:

```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

- 调用 req.session.destroy() 函数,即可清空服务器保存的 session 信息。

```js

    // 退出登录的接口

    app.post('/api/logout', () => {

        // 清空当前客户端对应的 session 信息

        req.session.destroy()

        req.send({

            status: 200,

            msg: '退出登录成功'

        })

    })

```

相关文章

网友评论

      本文标题:在 Express 中使用 Session 认证

      本文链接:https://www.haomeiwen.com/subject/gufyfdtx.html