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

#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, несмотря на то, что я прочитал это в документах, я очень благодарен, потому что я не знал, будет ли это решением проблемы, с которой я столкнулся, спасибо за то, что вы так отзывчивы!