要实现持久化登录,可以使用以下步骤:
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
const jwt = require('jsonwebtoken');
// 登录成功后发放 token
const token = jwt.sign({userId: 'your-user-id'}, 'your-secret-key', {expiresIn: '7d'}); // token 有效期为 7 天
res.cookie('token', token, {httpOnly: true}); // 存储 token 在 cookie 中,并且设置为 httpOnly,防止 XSS 攻击
// 在需要验证的路由中
const jwt = require('jsonwebtoken');
app.get('/protected-route', (req, res) => {
const token = req.cookies.token;
if (!token) return res.status(401).send('Unauthorized');
try {
const decoded = jwt.verify(token, 'your-secret-key');
req.userId = decoded.userId; // 在 req 对象中存储用户 ID,方便后续使用
next();
} catch (err) {
res.status(401).send('Unauthorized');
}
});
// 在退出登录的路由中
res.clearCookie('token');
这样就可以实现持久化登录了。请注意,JWT 的密钥应该保密,不要泄露给其他人。
上一篇:AuthUI.getInstance()已经弃用,无法使用startActivityForResult()方法。
下一篇:AuthzedSpiceDB:failedtocreatePostgresdatastore,failedtoconnect