Я хочу использовать express-jwt в своем приложении экспресс-узла, но не могу найти примеры, демонстрирующие часть входа в систему.
Любая помощь, пожалуйста?
Я хочу использовать express-jwt в своем приложении экспресс-узла, но не могу найти примеры, демонстрирующие часть входа в систему.
Любая помощь, пожалуйста?
Я бы порекомендовал вам попытаться понять принцип JWT и то, как они передаются между сервером и клиентом и сопоставляются на стороне сервера с секретом - вот документ
Полезной нагрузкой могут быть любые произвольные пользовательские данные, то есть просто имя пользователя или идентификатор.
В основном вам нужна служба, которая генерирует токен при успешной аутентификации (когда пользователь входит в систему с соответствующими учетными данными, например: usr и pwd) и создает дополнительный заголовок с токеном, который будет использоваться в дальнейших запросах к серверу.
Для jwt-express вам, очевидно, необходимо установить пакет (так же, как и для jsonwebtoken), например :
npm install jwt-express --save
затем инициализируйте его так:
var jwt = require('jwt-express');
app.use(jwt.init('secret'));
из документов:
Функция jwt.init() возвращает промежуточную функцию для Express, поэтому ее нужно вызывать внутри app.use(). Он автоматически прочитает JWT либо из файла cookie, либо из заголовка авторизации (настроенного вами) и добавит объект JWT в объект запроса (req). Он также добавит метод jwt() к объекту Response (res) для создания/сохранения JWT. jwt.init() должен вызываться перед любым другим методом jwt.
Это ваши варианты:
Остальная логика зависит от вас, но мои примеры должны дать вам четкое представление о том, как управлять jwt в вашем приложении.
Вот пример того, как я реализовал jwt через jsonwebtoken:
// INFO: Function to create headers, add token, to be used in HTTP requests
createAuthenticationHeaders() {
this.loadToken(); // INFO: Get token so it can be attached to headers
// INFO: Headers configuration options
this.options = new RequestOptions({
headers: new Headers({
'Content-Type': 'application/json', // INFO: Format set to JSON
'authorization': this.authToken // INFO: Attach token
})
});
}
// INFO: Function to get token from client local storage
loadToken() {
this.authToken = localStorage.getItem('token');; // Get token and assign to variable to be used elsewhere
}
и некоторые функции для хранения пользовательского статуса i.E.:
// INFO: Function to store user's data in client local storage
storeUserData(token, user) {
localStorage.setItem('token', token); // INFO: Set token in local storage
localStorage.setItem('user', JSON.stringify(user)); // INFO: Set user in local
storage as string
this.authToken = token; // INFO: Assign token to be used elsewhere
this.user = user; // INFO: Set user to be used elsewhere
}
и функция выхода из системы для уничтожения токена в локальном хранилище, т.е.:
// INFO: Function for logging out
logout() {
this.authToken = null; // INFO: Set token to null
this.user = null; // INFO: Set user to null
localStorage.clear(); // INFO: Clear local storage
}
Если вы используете jsonwebtoken от npm, вы можете установить ttl токена при его создании:
const token = jwt.sign({ id: idDB }, "secret", { expiresIn: '24h' });
или какой бы ttl вы ни пожелали, секрет строки относится к секрету, который сопоставляется с сервером.
express-jwt
граничат с бесполезностью. - person stripybadger   schedule 30.04.2020