我有一个使用react-router的通用NodeJS,Express,React / Redux应用程序。它是从服务器端在应用程序的初始请求和客户端上呈现来自react-router的后续请求。
我的routes.js文件:
<Route path="/" component={App}>
<Route path="/main" component={Main}/>
<Route path="/login" component={Login}/>
</Route>
我有一个匹配此react-routes的通配符快速路由,并将组件标记发送回模板:
import routes from '../routes';
app.get('*', (req, res) => {
match(
{ routes, location: req.url },
(err, redirectLocation, renderProps) => {
let markup;
if (renderProps) {
markup = renderToString(
<Provider store={store}>
<RouterContext {...renderProps}/>
</Provider>
);
} else {
markup = renderToString(<NotFoundPage/>);
res.status(404);
}
return res.render('index', { markup });
}
);
});
现在我想使用passport-jwt来保护通配符路由拦截的一些路由,例如:
app.get("*", passport.authenticate('jwt', { session: false }),
(req, res) => {
match(
{ routes, location: req.url },
(err, redirectLocation, renderProps) => {
res.json("Success! You can not see this without a token");
}
)
});
如何在通配符路由上仅保护来自routes.js的给定路由?
答案 0 :(得分:1)
您可以通过glDeleteBuffers(1, &VBO);
添加一些中间件来执行此操作。
(https://expressjs.com/en/4x/api.html#app.use)
请务必在通配符处理程序
之前调用它app.use