Je veux authentifier par nom d'utilisateur et mot de passe.J'utilise l'authentification des plumes pour le faire mais je ne comprends pas après la configuration mon application, comment vérifier mes données d'entrée (nom d'utilisateur et mot de passe) dans mon serveur pour permettre l'authentification des plumes? Dans mon client j'ai ce code pour envoyer mes données (nom d'utilisateur et mot de passe)comment vérifier le nom d'utilisateur et mot de passe avec feathersjs?
app.authenticate({
strategy: 'local',
username: 'k0',//self.state.username,
password:'kk'// self.state.password
}).then(response => {
console.log('Authenticated!', response);
return app.passport.verifyJWT(response.accessToken);
})
.then(payload => {
console.log('JWT Payload', payload);
return app.service('users').get(payload.userId);
})
.then(user => {
app.set('user', user);
console.log('User', app.get('user'));
})
.catch(function(error){
console.error('Error authenticating!', error);
});
Mais j'ai une erreur
"POST http://localhost:4200/authentication 400 (Bad Request)
Error authenticating!
BadRequest {type: "FeathersError", name: "BadRequest", message: "Missing credentials", code: 400, className: "bad-request", …}
className
:
"bad-request"
code
:
400
data
:
{message: "Missing credentials"}
errors
:
{}
message
:
"Missing credentials"
name
:
"BadRequest"
type
:
"FeathersError"
stack
:
"BadRequest: Missing credentials↵ at new BadRequest
__proto__
:
Error"
Et ce server.js mes
var Users=[ {_id:"1",email:"k0",password:"kk"}, {_id:"2",email:"k1",password:"kk"}, {_id:"3",email:"k2",password:"kk"}, {_id:"4",email:"k3",password:"kk"}, {_id:"5",email:"k4",password:"kk"}];
const feathers = require('feathers');
const bodyParser = require('body-parser');
const errors = require('feathers-errors');
const errorHandler = require('feathers-errors/handler');
const rest = require('feathers-rest');
const hooks = require('feathers-hooks');
const auth = require('feathers-authentication');
const local = require('feathers-authentication-local');
const memory = require('feathers-memory');
const jwt = require('feathers-authentication-jwt');
const app = feathers(); app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: true })); var cors = require('cors'); var port= process.env.PORT ||4200;app.use(cors());
`
.use('/users', {
find(params) {
return Promise.resolve(Users);
}
})
.use(errorHandler());
app.service('authentication').hooks({
before: {
create: [
auth.hooks.authenticate('local'),
customizeJWTPayload()
],
remove: [
auth.hooks.authenticate('jwt')
]
}
});
app.service('users').hooks({
before: {
create: [
local.hooks.hashPassword({ passwordField: 'password' })
]
}
`});app.post('/login', auth.express.authenticate('local', { successRedirect: '/app', failureRedirect: '/login' }));
app.get('/app', (req, res, next) => {
res.json({ success: true });
});
app.get('/login', (req, res, next) => {
res.json({ success: "faux" });
});
app.listen(port);`
La propriété nom d'utilisateur par défaut est 'email'. L'avez-vous changé en "nom d'utilisateur" dans [votre configuration] (https://docs.feathersjs.com/api/authentication/local.html#default-options)? – Daff
mais si je le fais app.authenticate ({ stratégie: 'local', email: 'K0', // self.state.username, mot de passe: 'kk' // self.state.password }) J'ai une autre erreur "BadRequest: Credentials". – John