【问题标题】:Decrypt incoming response angular 9解密传入响应角度 9
【发布时间】:2020-05-02 22:00:08
【问题描述】:

我正在使用 angular 9 和拦截器...我使用的 API 加密 AES 中的 JSON 响应,当 API 响应时,我需要解密 angular 9 中的响应...我需要得到原始响应,但我看不到这样做的方法……角度 9 中的拦截器看起来不允许我这样做。我所做的是:

import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map, tap, catchError, filter, scan } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class ResponseInterceptor implements HttpInterceptor {

  constructor() {}

  intercept(
    req: HttpRequest<any>,
    next: HttpHandler
  ): Observable<HttpEvent<any>> {

    return next.handle(req).pipe(
        tap(evt => {
            if (evt instanceof HttpResponse) {
               console.log(evt);
            }
        }));
  }
}

API 响应是:

kVwKXPYoRTPNZVv0X6pCWA9cpj7CqGV1h4zvI8X4F47FIJpTwLAP497JquiC+t95skz9HSdUJfizjPz+7jokcxUuW1dUdP8/MTp+Gn0TxPHTF+o6gUFj3sZJQGESMolINa0vjuvaHogiIcdn0XO6mdeDgD6AIOqqgvOUM2EYwcjzHXC3Ag8wL0ybeSMZB7j3XFmcfO97EohLM2yPBvwqeO0a8Dqzsn+DE5VXNOdcK8ArzXbXe8eARQl+vajGU6JuFsSsSU+cNil2AQHemyzknl02MWL7nIAps4SgynpGRw4z0IIhE2EbJANj5WzoxvOHNbGYPjkdPezO91CKeWsdZdCcDcJeJqdclvuntXRnkZVHTB/zARgiYLREHQ/eO5/5W25JR3En3+B3yIyoXI+W70fgLOZofSPYK6yUrkO0nZoAEdFGPcvOVx9eaQraDjGLG7JrnpRpXqscW8sFpaNvR2Cfay8gRJcscGDZlsSlhNMce6r/2WwDhQx29Dkvt2V+dBb4obrHTptqdCcq+uKnir/2cTUIOm03anZWU2c8u3WFxAalYbISGZrH6HySE/4ncP5y7Cm5ziAxDFLP4c4La1yKMKsFmBEfmzzdhgq8gGE6M3UPpLdaCF2yc4ddpJ7+l5QBT2pXIKQcNUraGbyD35hoB5AKyLfxTGd8wW2qVGe4RrrUXs5GhrZRZk0BwEFYG/kpQmGUvJ0hCA6lzUypOnYzNOeJ5s4XmprFhI9qIZPUoC/JroCnlw/+O4MN9cYI96RMvBICoL4+01c+y+ykppFP48kmKgk4+42ZFFC8mHg55rq9hTjJk5TKzq/N7Np2

当执行响应时,evt 变量类型为type,值为 0。任何建议???

拦截器不允许我对响应应用加密,并突然尝试将其转换为 JSON。

【问题讨论】:

标签: angular


【解决方案1】:

好的,虽然我得到了更有效和更专业的答案......我这样解决了:

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(

        catchError(err => {                

            this.alertService.clear();

            if (err.status === 200){

                return of(new HttpResponse({ status: 200, body: JSON.parse(aes.decrypt(err.error.text)) }));                   
            }                

            if (err.status === 401) {

                this.authenticationService.logout();
                location.reload(true);
            }

            const error = err.error.message || err.statusText;
            this.alertService.error(error);            
            console.log(err);
        }))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-17
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2016-02-21
    • 2018-03-07
    相关资源
    最近更新 更多