JSON Web Token (JWT) — это компактный, URL-безопасный способ передачи информации между клиентом и сервером в виде JSON-объекта. В Angular JWT широко используется для аутентификации и авторизации пользователей, позволяя хранить данные сессии и обеспечивать доступ к защищённым ресурсам.
JWT состоит из трёх частей, разделённых точками:
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
1. Хранение токена Наиболее распространённые
способы: localStorage и sessionStorage.
localStorage сохраняет токен между сессиями,
sessionStorage удаляет его при закрытии браузера. Пример
сохранения:
localStorage.setItem('token', jwtToken);
2. Отправка токена с запросами Для доступа к
защищённым API необходимо прикреплять токен в заголовке
Authorization:
const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);
this.http.get('/api/protected', { headers }).subscribe(...);
3. Интерсепторы для автоматизации Angular позволяет использовать HTTP-интерсепторы, чтобы автоматически добавлять JWT ко всем запросам:
@Injectable()
export class JwtInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = localStorage.getItem('token');
if (token) {
req = req.clone({ setHeaders: { Authorization: `Bearer ${token}` } });
}
return next.handle(req);
}
}
exp, которое позволяет определить время истечения.localStorage удобно, но рискованно с
точки зрения XSS. Рекомендуется рассматривать альтернативы, такие как
HttpOnly cookies.Использование JWT в Angular позволяет эффективно управлять авторизацией, интегрируя клиентскую логику с серверными механизмами безопасности и обеспечивая плавный пользовательский опыт при работе с защищёнными ресурсами.