小明:最近我在开发一个“网上办事大厅”,但登录功能一直不太顺利,你能帮我看看吗?
小李:当然可以。你用的是哪种技术栈?比如前端是React还是Vue,后端是Node.js还是Spring Boot?
小明:前端用的是React,后端是Node.js,用Express框架。

小李:那我们可以先从登录接口开始设计。首先,用户输入用户名和密码,前端发送POST请求到后端。
小明:明白了,那后端怎么处理呢?
小李:后端接收到数据后,需要验证用户名和密码是否匹配数据库中的记录。这里可以用JWT来生成令牌,用于后续的身份验证。
小明:那能给我一个示例代码吗?
小李:当然可以,下面是一个简单的登录接口代码:
// 后端登录接口(Node.js + Express)
app.post('/login', async (req, res) => {
const { username, password } = req.body;
const user = await User.findOne({ where: { username } });
if (!user || !await bcrypt.compare(password, user.password)) {
return res.status(401).send('用户名或密码错误');
}
const token = jwt.sign({ id: user.id }, 'secret_key', { expiresIn: '1h' });
res.json({ token });
});
小明:谢谢!那前端怎么处理这个token呢?
小李:前端拿到token后,可以保存在localStorage或者cookie中,之后每次请求都需要带上这个token,用于身份验证。
小明:明白了,这样就能实现安全的登录了。
小李:没错,这就是“网上办事大厅”的基本登录逻辑,结合解决方案可以提升用户体验和系统安全性。
