Php Angular 5 material按钮在单击以发送id并生成令牌时给出无效数组长度错误
我正在尝试使用JWT和angular 5以及PHP来生成一个令牌。出于测试原因,我使用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
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';