gpt4 book ai didi

javascript - Feathers JS 身份验证,无需电子邮件

转载 作者:行者123 更新时间:2023-12-03 02:29:11 25 4
gpt4 key购买 nike

我正在寻找一个身份验证系统,其中用户提交到一个端点并在此端点生成一个jwt,我不确定如何实现这一点,我的客户端应用程序不使用电子邮件地址或存储的信息,它是实际上是一个 dApp。我只需要一个端点,如果这些值的处理顺利的话,它将根据提供的种子短语和密码计算出一个值(并且几乎总是如此,除非有人向端点发送垃圾邮件),然后将发出 jwt.. 到目前为止Feathers 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);
};

我对 Feather 比较陌生,但对构建身份验证系统(用 PHP)不太了解

最佳答案

Custom authentication strategy指南和 feathers-authentication-custom插件可能允许做你正在寻找的事情。

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

最简单的方法是使用第一个选项和自定义 header (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'));
}
}));

关于javascript - Feathers JS 身份验证,无需电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48806444/

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