Worklight 6.1 加密缓存错误

Posted

技术标签:

【中文标题】Worklight 6.1 加密缓存错误【英文标题】:Worklight 6.1 Encrypted Cache error 【发布时间】:2014-06-26 17:30:24 【问题描述】:

我正在编写代码以将一些信息存储到 worklight 加密缓存。 我正在尝试加密一个值,它是我的本地数据库中的主键,它看起来像 50005 它是一个数字,我将它传递给加密缓存的 write 方法 我正在网络预览环境中运行项目。 错误是无效的参数值“50005”,应为 null 或“字符串”。 以下是代码sn -p

function setUserId(userId)
    WL.EncryptedCache.write("USER_ID",userId, onCompleteHandler, onErrorHandler);
    

function onCompleteHandler(status)
        console.log("Global cache write success.");
    

    function onErrorHandler(status)
        console.log("Global cache open error."+status);
        switch(status)
        case WL.EncryptedCache.ERROR_KEY_CREATION_IN_PROGRESS:
            console.log("ERROR: KEY CREATION IN PROGRESS");
            break;
        case WL.EncryptedCache.ERROR_LOCAL_STORAGE_NOT_SUPPORTED:
            console.log("ERROR: LOCAL STORAGE NOT SUPPORTED");
            break;
        case WL.EncryptedCache.ERROR_NO_EOC:
            console.log("ERROR: NO EOC");
            break;
        case WL.EncryptedCache.ERROR_COULD_NOT_GENERATE_KEY:
            console.log("ERROR: COULD NOT GENERATE KEY");
            break;
        case WL.EncryptedCache.ERROR_CREDENTIALS_MISMATCH:
            console.log("ERROR: CREDENTIALS MISMATCH");
            break;
        default:
            console.log("AN ERROR HAS OCCURED. STATUS :: " + status);
        
    

【问题讨论】:

【参考方案1】:

在使用 API 调用之前,请务必查看 API 文档。 Here's the documentation for write.

上面写着:

参数:

值 - 强制。细绳。要加密的数据。当设置为 null 时,键被移除。

变化:

WL.EncryptedCache.write("USER_ID",userId, onCompleteHandler, onErrorHandler);

到:

WL.EncryptedCache.write("USER_ID",userId.toString(), onCompleteHandler, onErrorHandler);

您只能使用该 API 存储字符串。如果要存储对象,则必须使用JSON.stringify(对象到字符串)和JSON.parse(字符串到对象)。如果你想从 string 到 int,你可以像这样使用parseInt 函数:parseInt(userId)

或者,您可以改用 JSONStore API。请注意,它仅在 androidios 上受支持(在 Worklight v6.2 中,它也在 WP8 和 W8 上受支持)。代码看起来像这样:

var collections = 
  users : 
    searchFields : 'userid' : 'integer'
  
;

var options = 
  password: '123'
;

WL.JSONStore.init(collections, options)
.then(function () 
  return WL.JSONStore.get('users').add(userid: 50005);
)
.then(function () 
  return WL.JSONStore.get('users').findAll();//or .find(userid: 50005)
)
.then(function (results) 
  WL.Logger.debug(results);
)
.fail(function () 
  //handle failure in any of the API calls above
);

有用于 JSONStore 的文档 here。

【讨论】:

以上是关于Worklight 6.1 加密缓存错误的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 6.1 部署到 Windows Phone 8:AUTHENTICATION_ERROR,deviceId null

Worklight 6.1 - 如何将数据库数据存储在缓存中的某处以避免服务器端数据库的多次命中

IBM Worklight 6.1 [收到来自客户端的错误令牌]

IBM Worklight 6.1 - iOS 6.1 上的 App Center 错误

Worklight 6.1,Tomcat 7.0.42 上的 SQL 适配器 (Oracle 11g) JNDI 错误

IBM Worklight 6.1 - “Ecma 错误:TypeError:无法调用对象中的属性 <function>”