将 ATTR 传递给 Sails JS 中的所有良好响应

pass an attr to all good responses in sails js

本文关键字:响应 JS ATTR Sails      更新时间:2023-09-26

我目前正在做一个角度+帆项目。我正在使用 json 网络令牌进行身份验证。它工作正常,但我想为我的角度应用程序执行的每个经过验证的请求设置一个新令牌。

这是我的身份验证策略

passport.authenticate('jwt', function (error, user, info) {
     if (error) return res.serverError(error);
     if (!user) 
     return res.send({
       message: info.message,
       code: info.code,
       tokenError: info.name
     });
     // The token is ok past this line
     // I check the user again
     User.findOne({ email: user.email }, function (err, thisUser) {
       if (err) { return res.send(err); }
       if (!thisUser) {
         // send a bad response
       }
       req.user = user;
       // This is the new token that I wanna send to the frontend
       var newToken = AuthService.createToken(thisUser);
       next();
       });
})(req, res);

使用此策略,我可以创建新令牌,但是我需要一种方法在每个响应中包含此令牌,这就是我陷入困境的地方。我认为我可以在每个控制器操作中手动执行此操作,但这是我想避免的

在 Sails 中标准化响应的最佳方法是使用自定义响应功能。 简而言之,不要在控制器操作中调用res.send()res.json(),而是改为调用res.ok(),然后自定义每个新 Sails 应用程序生成的api/responses/ok.js文件。 这也是帆船蓝图使用的相同响应!

在您的情况下,您希望将令牌保存到请求对象上(例如 req.token ),然后在 ok.js 的逻辑中使用该属性。