前言:有这么一个场景,路由上有很多的参数,同时有一个token字段,通过路由上的mediaId,X-Test-Timestamp,ui_control 这三个字段生成一个md5值,然后和token要、做一个对比,看是否是通过这三个字段生成的token,为了防止用户通过修改路由上的某一个字段也能正常访问系统的问题,算是安全访问的一个优化
其中token是三方传的,代码内部用md算法来自己生成,规则必须保持一致,参数ru
https://play-web-common-ui.test.com.cn/?media_id=51aa54000e7e71ef9808f7f6d64b6302&X-Test-App-Id=Test_test&X-Test-Timestamp=1720777836712&X-Test-Nonce=8f9db75287d58a29&X-Test-Signature=GtQ0i0LwWK1Ek5Tu&X-Test-AuthMode=HMAC&X-Test-VodAddr=https://testmedia-vod-Test.test.xdf.cn&token=8b97aed566b1f7cb75c7b4fb31ccc9f9&ui_control=196639
1.md5根据固定参数生成
// 安装
npm i crypto-js// 引入
import CryptoJS from "crypto-js";// 封装一个生成md5的方法
/*** md5* @param {string|Buffer} data* @see https://tool.xuexiareas.com/encryption/md5* @returns {string} 小写16进制*/
const md5 = (data: string) => {return CryptoJS.MD5(data).toString();
}// 调用的地方
let mediaId = '' // 路由上的参数
let timestamp = '' // 路由上的参数
let uicontrol = '' // 路由上的参数
const fangAuth = md5( mediaId + timestamp + uicontrol)// 其中fangAuth就是用路由上的三个参数生成的md5值
console.log("fangAuth", fangAuth)
路由上的token和本地生成的md5值应该是一模一样才可以正常访问系统,token是和三方或者其他调用折约定好的。具体用什么数据来生成md5,你们内部自己定好就行