#feathersjs
#feathersjs
Вопрос:
Я пытаюсь использовать локальную аутентификацию, но получаю сообщение об ошибке «Неверный логин».
- Я отправляю «локальную» аутентификацию от клиента. Полученные данные на сервере
{ strategy: 'local',
email: 'email@gmail.com',
password: '123' },
{ query: {},
provider: 'socketio',
headers: {},
session: {},
cookies: {} }
В authentication.js
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());
app.configure(oauth2(Object.assign({
name: 'auth0',
Strategy: Auth0Strategy
}, config.auth0)));
app.service('authentication').hooks({
before: {
create: [
(data)=>{console.log('auth',data.arguments)},
authentication.hooks.authenticate(config.strategies),
],
remove: [
authentication.hooks.authenticate('jwt')
]
}
});
};
- Сервер находит запись в базе данных и возвращает результат запроса
{ id: 1,
email: 'email@gmail.com',
password:
'$2a$13$t2XZsqu/0t5jKSdbRUyZTOVOoZJVtiha3sN/Z8N0O190Z0DUJj70O',
auth0Id: null,
isVerified: null,
verifyToken: 'string',
verifyExpires: null,
resetToken: 'string',
resetExpires: null,
createdAt: 2019-04-14T22:04:52.000Z,
updatedAt: 2019-04-14T22:04:52.000Z }
- После этого он пытается сравнить hahs паролей, но хэш полученного пароля не равен паролю в результате запроса. Полученный пароль объединяется с текущим временем в хэше результата.
Как использовать локальную аутентификацию в feathers?
UPD
конфигурации из default.json
"authentication": {
"secret": "my secret key here",
"strategies": [
"jwt",
"local"
],
"path": "/authentication",
"service": "users",
"jwt": {
"header": {
"typ": "access"
},
"audience": "https://yourdomain.com",
"subject": "anonymous",
"issuer": "feathers",
"algorithm": "HS256",
"expiresIn": "1d"
},
"local": {
"entity": "user",
"usernameField": "email",
"passwordField": "password"
},
"auth0": {
"clientID": "your auth0 client id",
"clientSecret": "your auth0 client secret",
"successRedirect": "/",
"domain": "mydomain.auth0.com",
"scopes": [
"profile"
]
}
}
Комментарии:
1. Просто или ради любопытства, почему вы отправляете стратегию аутентификации так, как
local
будто пытаетесь пройти аутентификацию с помощьюOAuth
?2. Я думаю, если я использую app.configure(local()); Я добавляю локальный метод аутентификации.
3. Если local не добавлен, я получаю неверный запрос: стратегия аутентификации «local» не зарегистрирована
4. вы пробовали стратегию OAuth?
5. Когда вы говорите «Полученный пароль объединяется с текущим временем в хэше результата», означает ли это, что вы используете перехват для изменения способа хэширования пароля? Локальная стратегия использует bcrypt для хэширования и сравнения предоставленного пароля. Если вы меняете способ хэширования пароля, это причина, по которой вы получаете ошибку.
Ответ №1:
На самом деле bcrypt (используемый feathers внутренне для хеширования) использует соли для хеширования наших паролей, поэтому вы каждый раз получаете разные результаты для одной и той же строки.