羽毛JS身份验证,没有电子邮件



im正在寻找一个身份验证系统,用户在此端点生成了enpoint和jwt,我不确定如何实现它,我的客户端应用程序不使用电子邮件地址或存储的信息,实际上是DAPP。我只需要一个端点,如果这些值的处理良好,则可以从提供的种子短语和密码中计算一个值(除非有人将垃圾发送到端点,否则几乎总是会发出JWT。带有羽毛的盒子功能CLI意味着我需要使用本地策略并需要电子邮件地址,我无法在此处找到任何演示。到目前为止,我的身材非常默认

const authentication = require('@feathersjs/authentication');
const jwt = require('@feathersjs/authentication-jwt');
const local = require('@feathersjs/authentication-local');

module.exports = function (app) {
  const config = app.get('authentication');
  // Set up authentication with the secret
  app.configure(authentication(config));
  app.configure(jwt());
  app.configure(local());
  // The `authentication` service is used to create a JWT.
  // The before `create` hook registers strategies that can be used
  // to create a new valid JWT (e.g. local or oauth2)
  app.service('authentication').hooks({
    before: {
      create: [
        authentication.hooks.authenticate(config.strategies)
      ],
      remove: [
        authentication.hooks.authenticate('jwt')
      ]
    }
  });
};

和我的服务:

// Initializes the `aerAuth` service on path `/userauthendpoint`
const createService = require('feathers-memory');
const hooks = require('./userauthendpoint.hooks');
module.exports = function (app) {
  const paginate = app.get('paginate');
  const options = {
    name: 'userauthendpoint',
    paginate
  };
  // Initialize our service with any options it requires
  app.use('/userauthendpoint', createService(options) );
  // Get our initialized service so that we can register hooks and filters
  const service = app.service('userauthendpoint');
  service.hooks(hooks);
};

我对羽毛是相对较新的,但不是构建身份验证系统(在PHP中(

"自定义身份验证策略指南"one_answers"羽毛" - "验证插件"插件可能允许做您想要的事情。

这也取决于您要如何实现。您可以为每项服务使用自定义策略(如API键,必须在每个请求中发送到标题中(,也可以在/authentication服务之前以每个服务发送(以允许创建JWT(这里的问题是它需要引用数据库中存在的userId或其他entityId(。

最简单的方法是使用第一个选项和一个自定义标头(X-DAP-PASSWORD(,它看起来像这样:

const custom = require('feathers-authentication-custom');
app.configure(authentication(settings));
app.configure(custom((req, done) => {
  const password = req.headers['x-dap-password'];
  if(checkPassword(req.app.get('seedPassphrase'), password)) {
    // implement your own custom logic for loading and verifying the user
      done(null, user);
  } else {
    done(new Error('Invalid passphrase'));
  }
}));

相关内容

  • 没有找到相关文章

最新更新