#feathersjs #feathers-authentication
#feathersjs #перья-аутентификация
Вопрос:
Всякий раз, когда я пытаюсь войти в систему с правильным пользователем и правильным паролем, все в порядке, но всякий раз, когда я пытаюсь войти в систему с несуществующим пользователем или ошибочным паролем, я просто получаю ту же ошибку, которая:
{
"name": "NotAuthenticated",
"message": "Invalid login",
"code": 401,
"className": "not-authenticated",
"errors": {}
}
Ожидаемый результат — показать: user не существует. Или, например: данные пользователь и пароль не совпадают
вот что я делаю в своем коде
var username = "givenUsername"
var password = "givenPassword"
client.authenticate({
strategy: 'local',
username, password
}).then((authResponse)=>{
console.log(authRersponse)
}).catch((err)=>{
console.error(err)
})
Ответ №1:
По умолчанию это не выполняется, поскольку это позволит злоумышленнику угадать, какие адреса электронной почты или имена пользователей зарегистрированы в вашей системе. Вы всегда можете настроить локальную стратегию аутентификации, чтобы генерировать нужные вам ошибки, например, переопределив findEntity и comparePassword:
const { AuthenticationService, JWTStrategy } = require('@feathersjs/authentication');
const { LocalStrategy } = require('@feathersjs/authentication-local');
const { NotAuthenticated } = require('@feathersjs/errors');
class MyLocalStrategy extends LocalStrategy {
async findEntity(username, params) {
try {
const entity = await super.findEntity(username, params);
return entity;
} catch (error) {
throw new Error('Entity not found');
}
}
async comparePassword(entity, password) {
try {
const result = await super.comparePassword(entity, password);
return resu<
} catch (error) {
throw new Error('Invalid password');
}
}
}
module.exports = app => {
const authService = new AuthenticationService(app);
authService.register('local', new MyLocalStrategy());
// ...
app.use('/authentication', authService);
}
Комментарии:
1. Спасибо, Daff, несмотря на то, что я прочитал это в документах, я очень благодарен, потому что я не знал, будет ли это решением проблемы, с которой я столкнулся, спасибо за то, что вы так отзывчивы!