HTML   发布时间:2022-04-14  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了web-services – 使用简单的AUTH调用REST API大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对风帆很陌生,但在阅读了文档并在互联网上关注了一些例子后,我决定试一试;) @H_696_2@我已经制作了一个依赖于我想在Sails框架中构建的REST Web服务的APP – 但经过大量的研究后我还没有在风帆中找到合适的解决方案.

@H_696_2@我想我想在从应用程序发出的每个webservice调用中传递(用户名,密码)或api_key?

@H_696_2@我找到的所有示例都只使用会话登录方法 – 而不是每次调用都使用API​​密钥.

@H_696_2@我用过这个教程 – http://jethrokuan.github.io/2013/12/19/Using-Passport-With-Sails-JS.html

@H_696_2@但只能登录到登录页面 – 我希望它在每次调用时登录,并且仍然希望使用REST API蓝图中的构建.

@H_696_2@我的解决方案中的问题是,这样的调用 – 由于默认的REST方法,不会按预期给我所有用户 – 我希望它授权用户并给我结果..

@H_696_2@http://example.com:1337/user/?username=test&password=xxx

@H_696_2@使用REST Web服务后端构建APP的“最佳实践”是什么? – “带帆”

@H_696_2@我的一些代码:

// policies/authentication.js
if(req.param('username') && req.param('password')) {
    UserAuth.auth(req,res,function(err,user) {
      if (err) return res.forbidden('You are not permitted to perform this action.');

      if(user) {
        return next();
      }
    });
  }else{
    return res.forbidden('You are not permitted to perform this action.');
  }
// services/UserAuth.js

module.exports = {

  auth : function(req,cb) {

    var bcrypt = require('bcrypt');
    var passport = require("passport");

    passport.authenticate('local',user,info){

      if (err) return cb({ error: 'auth error!',status: 400 });

      if(user) {
        cb(null,user);
      }

    })(req,res);

  }
}
// config/policies.js
module.exports.policies = {

  '*': "authentication"
};

解决方法

首先,像这样在野外持续暴露用户名和密码是不好的做法.至少,您应该虑发布一段时间后过期的access_tokens,并且需要通过登录系统重新发布. @H_696_2@其次,如果要对每个请求进行身份验证(而不是使用会话),最好使用请求标头进行身份验证,而不是将凭据放在查询字符串中.使用Sails蓝图时尤其如此;否则你将不得不为keep the blueprints from using your credentials as search criteria做额外的工作.

@H_696_2@使用标头时,使用Sails的每请求授权变得简单.在api / policies中设置一个名为(例如)auth.js的策略:

@H_289_20@module.exports = function (req,next) { // Find an access header var accessToken = req.header('my-auth-header'); // No header,no access if (!accessToken) {return res.forbidden();} // Find the user with that token User.findOne({accessToken: accessToken}) .exec(function(err,user) { // Handle error if (err) {return next(err);} // Handle bad access token if (!user) {return res.forbidden();} // Handle success return next(); }); } @H_696_2@然后,您可以使用config/policies.js file设置需要身份验证的任何控制器操作:

@H_289_20@module.exports = { someController: { '*': 'auth' },...etc... }

大佬总结

以上是大佬教程为你收集整理的web-services – 使用简单的AUTH调用REST API全部内容,希望文章能够帮你解决web-services – 使用简单的AUTH调用REST API所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。