【发布时间】:2015-10-26 04:01:52
【问题描述】:
我有一个对服务器的身份验证后调用,如下所示:
http://localhost/ServiceName/AuthenticateUser
这样发送的正文:
{
"userCredentials":"{{securityToken}}"
}
我总是必须在 Postman 中执行两次此 Authenticate 调用,以正确填充我的全局 var 'securityToken' 并在其后用于下一次 Authenticate 调用,因此看起来预请求脚本实际上是在脚本之后运行的,或者是不是请求前脚本中设置的全局变量不适用于当前请求?
第一次运行时服务器返回登录错误,下次登录正常。
我做错了什么?
这是预请求脚本:
// Import the CryptoJS library with jQuery
$.when(
$.getScript( "http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js" ),
$.getScript( "http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js" ),
$.Deferred(function( deferred ){
$( deferred.resolve );
})
).done(function(){
//The scripts are all loaded
var api = {
connection: {
aesIV: 'blabla',
aesKey: 'secretNoTellingYou'
}
}
var aesIV = CryptoJS.enc.Hex.parse(api.connection.aesIV);
var aesKey = CryptoJS.enc.Utf8.parse(api.connection.aesKey);
if (!CryptoJS || !CryptoJS.AES || !CryptoJS.MD5) {
alert('CryptoJS AES and MD5 Library Must Be Loaded');
}
var encrypt = function (text) {
var encrypted = CryptoJS.AES.encrypt(text, aesKey, { iv: aesIV });
return encrypted;
};
var encryptedUserCode = encrypt(globals["userCode"]).toString();
var md5Password = CryptoJS.MD5(globals["password"]).toString().toUpperCase();
var encryptedPassword = encrypt(md5Password.toString());
var token = SomeFunctionToCreateToken(encryptedUserCode , encryptedPassword);
postman.setGlobalVariable('securityToken', token);
});
【问题讨论】:
-
是否有可能在初次通话时出现错误。我有一个类似的问题,似乎预请求脚本没有运行,结果发现在服务器端我的服务没有正确激活。您是否尝试过像 Fiddler 这样的工具来检查您的初始请求的响应?
-
@GartuanTezMaximus 不,跟踪服务器代码,调用确实是使用先前的参数值进行的,并且完成。
标签: javascript postman