我正在閱讀Express JWT Permissions的文檔,但不明白如何將當前用戶的權限保存在令牌中。我只看到如何檢查已經設置的權限。快遞JWT權限:如何設置權限?
任何人都可以發佈設置權限的示例嗎?例如假設我們對用戶進行了身份驗證,並且想給他一個管理員權限。
我正在閱讀Express JWT Permissions的文檔,但不明白如何將當前用戶的權限保存在令牌中。我只看到如何檢查已經設置的權限。快遞JWT權限:如何設置權限?
任何人都可以發佈設置權限的示例嗎?例如假設我們對用戶進行了身份驗證,並且想給他一個管理員權限。
這不是那個lib的問題。設置令牌值不是任何jwt權限庫的一部分,它們假定在執行中間件時已經設置了正確的值。
這是我的公共node seed project提取,看看如何在一個令牌
import * as jwt from 'jsonwebtoken';
const router = Router();
router.get('/api/v1/token', (req: Request, res: Response, next: NextFunction) => {
const token = jwt.sign({ someData: 'foobar' }, config.getJwtSecret());
res.json({ token: token });
});
代碼設置值的例子。
您應該添加「權限」屬性,智威湯遜有效載荷的所有權限用戶的陣列有:
import * as jwt from 'jsonwebtoken';
public static authenticate(req: Request, res: Response, next: NextFunction) {
const payload = {
name: 'John',
surname: 'Smith',
username: 'john.smith',
permissions: ['USER', 'ADMIN'],
};
const options = {
expiresIn: Number(process.env.JWT_TTL),
};
const token = jwt.sign(payload, process.env.JWT_SECRET, options);
res.status(201).send({ token });
}
以後,當用戶發送的請求與授權令牌,你應該使用快遞,智威湯遜 - 允許lib中檢查用戶是否擁有正確的權限:
const guard = require("express-jwt-permissions")();
// all user routes
this.routes.use('/api', guard.check('USER'));
// ...
// all admin routes
this.routes.use('/api/admin/', guard.check('ADMIN'));
// ...