我正在使用asp.net& amp;身份2.这是我的主要数据api。
我还使用expressjs构建另一个api来搜索存储在搜索索引中的数据。
Angular spa将消耗这些api用于数据和搜索需求。
如何使用asp.net身份已经在用户登录时为角度提供的承载令牌来保护expressjs api调用?
答案 0 :(得分:3)
要实现这一点,您需要在expressjs API中使用令牌消费中间件。我这样做了如下
npm install jsonwebtoken
参考 - https://jwt.io
var apiRoutes = express.Router();
apiRoutes.use(function(req, res, next)
{
// check header or url parameters or post parameters for token
var token = req.body.token || req.query.token || req.headers['x-access-token'];
// decode token
if (token) {
// verifies secret and checks exp
jwt.verify(token, app.get('superSecret'), function(err, decoded)
{
if (err)
{
return res.json({ success: false, message: 'Failed to authenticate token.' });
}
else
{
// if everything is good, save to request for use in other routes
req.decoded = decoded;
next();
}
});
}
else
{
// if there is no token
// return an error
return res.status(403).send({
success: false,
message: 'No token provided.'
});
}
});
参考 - https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens
P.S。 - 我使用发布JWT(授权服务器或Auth&资源服务器)的Web API完成了这项工作,并成功地保护了在python(资源服务器)和spring(资源服务器)中构建的API。
答案 1 :(得分:0)
尝试 express-bearer-token 。这似乎符合您的描述