Как я могу получить определенные ошибки при попытке входа в систему с помощью Feathers.js

Всякий раз, когда я пытаюсь войти в систему с правильным пользователем и правильным паролем, все в порядке, но всякий раз, когда я пытаюсь войти в систему с несуществующим пользователем или ошибочным паролем, я получаю ту же ошибку:

{
  "name": "NotAuthenticated",
  "message": "Invalid login",
  "code": 401,
  "className": "not-authenticated",
  "errors": {}
}

Ожидаемый результат - показать: пользователя не существует. Или, например: данный пользователь и пароль не совпадают

вот что я делаю в своем коде

var username = "givenUsername"
var password = "givenPassword"

 client.authenticate({
  strategy: 'local',
  username, password
}).then((authResponse)=>{
  console.log(authRersponse)
}).catch((err)=>{
  console.error(err)
})

person Rene Polo    schedule 06.10.2020    source источник


Ответы (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 result;
    } catch (error) {
      throw new Error('Invalid password');
    }
  }
}

module.exports = app => {
  const authService = new AuthenticationService(app);

  authService.register('local', new MyLocalStrategy());

  // ...
  app.use('/authentication', authService);
}
person Daff    schedule 06.10.2020
comment
Спасибо, Дафф, даже несмотря на то, что я прочитал это в документации, я очень благодарен, потому что не знал, будет ли это решением моей проблемы, спасибо за то, что вы так быстро отреагировали! - person Rene Polo; 07.10.2020