【发布时间】:2017-10-13 16:59:13
【问题描述】:
我有一个使用 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 的影响?
【问题讨论】:
标签: javascript node.js reactjs react-router passport.js