如何检查特定路由器的JWT令牌
我有类型的路由器。
/ auth / signIn
/ AUTH /注册
/用户/所有
/用户/:ID
/房间/所有
/房间/:ID
还有一条生产路线。
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, '../build', 'index.html'));
});
并且我具有验证JWTToken的功能。
verifyJWTToken(req.headers.token)
.then((user) => {
req.user = user.data._doc;
next();
})
.catch((err: any) => {
res.status(403).json({message: "Invalid token."});
});
如何正确检查某些路由器的令牌?特别是/ user /,/ rooms /
但不适用于/ auth /和生产路线
我想指出的是,随着时间的流逝,路线的数量会越来越大。
回答如下:您可以使用verifyJWTToken
方法作为中间件来验证特定路由的令牌。
对于房间API,
router.get('/rooms', verifyJWTToken, (req, res) => {
// some operation
});
对于生产,您可以跳过中间件。
增订
对于两条路线/rooms/all
和/rooms/:id
,如果您有两条单独的路线,例如
router.get('/rooms/all', (req, res) => {
// some operation
});
和
router.get('/rooms/:id', (req, res) => {
// some operation
});
然后,您必须在两条路径上都使用middleware
。
但是如果您的设置是这样,
app.use('/rooms', roomRoutes);
现在在您的roomRoutes模块中,这两个路由存在,
router.get('/all', () => {});
router.get('/:id', () => {});
然后您只能使用一个middleware
,例如
app.use('/rooms', verifyJwtToken, roomRoutes);
如何检查特定路由器的JWT令牌
我有类型的路由器。
/ auth / signIn
/ AUTH /注册
/用户/所有
/用户/:ID
/房间/所有
/房间/:ID
还有一条生产路线。
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, '../build', 'index.html'));
});
并且我具有验证JWTToken的功能。
verifyJWTToken(req.headers.token)
.then((user) => {
req.user = user.data._doc;
next();
})
.catch((err: any) => {
res.status(403).json({message: "Invalid token."});
});
如何正确检查某些路由器的令牌?特别是/ user /,/ rooms /
但不适用于/ auth /和生产路线
我想指出的是,随着时间的流逝,路线的数量会越来越大。
回答如下:您可以使用verifyJWTToken
方法作为中间件来验证特定路由的令牌。
对于房间API,
router.get('/rooms', verifyJWTToken, (req, res) => {
// some operation
});
对于生产,您可以跳过中间件。
增订
对于两条路线/rooms/all
和/rooms/:id
,如果您有两条单独的路线,例如
router.get('/rooms/all', (req, res) => {
// some operation
});
和
router.get('/rooms/:id', (req, res) => {
// some operation
});
然后,您必须在两条路径上都使用middleware
。
但是如果您的设置是这样,
app.use('/rooms', roomRoutes);
现在在您的roomRoutes模块中,这两个路由存在,
router.get('/all', () => {});
router.get('/:id', () => {});
然后您只能使用一个middleware
,例如
app.use('/rooms', verifyJwtToken, roomRoutes);