gpt4 book ai didi

javascript - 在服务器端呈现的 Express/React 应用程序上使用 passport-jwt

转载 作者:行者123 更新时间:2023-11-29 23:46:13 25 4
gpt4 key购买 nike

我有一个使用 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 路线的通配符快速路线,并将组件标记发送回模板:

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 的给定路由?

最佳答案

您可以通过 app.use 添加一些中间件来执行此操作。 ( https://expressjs.com/en/4x/api.html#app.use )

请务必在通配符处理程序之前调用它

app.use("/main", passport.authenticate('jwt', { session: false }), 
function(req, res){
res.json("Success! You can not see this without a token");
});

关于javascript - 在服务器端呈现的 Express/React 应用程序上使用 passport-jwt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com