Я решаю проблему с помощью jwt. на самом деле я использую angular для использования API, созданного с Symfony 3.4, и он генерирует токен, но когда я отправляю его, я устанавливаю заголовок с перехватчиком, как этот.
import {Injectable} from '@angular/core';
import {HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';
import {LoginService} from '../../services/authServices/login.service';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private auth: LoginService) {}
intercept(req: HttpRequest<any>, next: HttpHandler) {
if (req.url.indexOf('/admin') !== -1) {
const authToken: string = `Bearer ${this.auth.getJwtToken()}`;
if (authToken) {
console.log('sending token to perform API fetch...');
const authReq = req.clone({ setHeaders: { 'Authorization': authToken, 'Content-Type': 'application/json'} });
console.log(authReq);
return next.handle(
authReq
);
}
}
return next.handle(req);
}
}
, но Symfony возвращает ответ 401 не авторизован, когда я пытался извлечь ресурсы из защищенного маршрута, похоже, что Symfony также не извлекает токен
это мой конфигурационный файл lexik jwt, на котором я Symfony 3.4
lexik_jwt_authentication:
private_key_path: '%kernel.project_dir%/config/jwt/private.pem' # required for token creation
public_key_path: '%kernel.project_dir%/config/jwt/private.pem' # required for token verification
pass_phrase: "%user_pass%" # required for token creation, usage of an environment variable is recommended
token_ttl: 3600
user_identity_field: id # key under which the user identity will be stored in the token payload
clock_skew: 0
# token encoding/decoding settings
encoder:
# token encoder/decoder service - default implementation based on the lcobucci/jwt library
service: lexik_jwt_authentication.encoder.lcobucci
# encryption algorithm used by the encoder service
signature_algorithm: RS256
# token extraction settings
token_extractors:
# look for a token as Authorization Header
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
# check token in a cookie
cookie:
enabled: false
name: BEARER
# check token in a query string parameter
query_parameter:
enabled: false
name: bearer