Php Angular 5 material按钮在单击以发送id并生成令牌时给出无效数组长度错误

Php Angular 5 material按钮在单击以发送id并生成令牌时给出无效数组长度错误,php,angular-material,jwt,angular5,cryptojs,Php,Angular Material,Jwt,Angular5,Cryptojs,我正在尝试使用JWT和angular 5以及PHP来生成一个令牌。出于测试原因,我使用CryptoAESJs库加密了userid变量,并通过post方法将其发送到php脚本: getToken() { let userid = 123; let key = "coded"; let encUserID = crypto.AES.encrypt(userid, key); const headerOptions = new HttpHeaders().set

我正在尝试使用JWT和angular 5以及PHP来生成一个令牌。出于测试原因,我使用
CryptoAESJs
库加密了
userid
变量,并通过
post
方法将其发送到php脚本:

getToken()
{
    let userid = 123;
    let key = "coded";
    let encUserID = crypto.AES.encrypt(userid, key);
    const headerOptions = new HttpHeaders().set
        ('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    const params = new HttpParams().set('userID', encUserID);

    this.http.post('http://aff.local/jwtTest.php', params, {
      headers: headerOptions,
      responseType: 'json'
    }).subscribe(
      res=>{
        console.log(res);
      },
      error=>{
        console.log(error);
      }
    )
}
我将其发送到PHP脚本:

<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application\JSON');
header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS');
header('Access-Control-Allow-Headers: *');
error_reporting(E_ALL);

require_once "CryptoJSAES.php";
require_once('JWT.php');

ini_set('log_errors', 0);
ini_set('display_errors', 1);

$key = "coded";
$id = $_POST['userID'];
$token = CryptoJSAES::decrypt($id,$key);

$jwt = JWT::encode($token, $key);


$jwtDecode = JWT::decode($jwt, $key, array('HS256'));

echo json_encode($jwtDecode);
?>
因此,在触发click事件时运行
getToken()
方法

单击后,我在控制台上出现以下错误:

错误范围错误:数组长度无效

位于WordArray.init.clamp(core.js:272)

位于WordArray.init.concat(core.js:237)

在Object.pad(cipher core.js:415)

at Object._doFinalize(cipher core.js:492)

在Object.finalize(cipher core.js:163)

在Object.encrypt(cipher core.js:675)

在Object.encrypt(cipher core.js:833)

在Object.encrypt(cipher core.js:201)

在AppComponent.push../src/app/app.component.ts.AppComponent.getToken (附件组件ts:20)

at Object.eval[as handleEvent](AppComponent.html:1)

这是材料的问题吗?还是用浏览器?还是从Angular发送到PHP的值有问题

编辑

//Imports
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import * as crypto from 'crypto-js';

CryptoAESJs库是否已导入到您的app.component.js?看来这个错误与这个图书馆有关是的。我将更新我的脚本。
//Imports
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import * as crypto from 'crypto-js';