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'));
}
}));