0

Worklight バージョン 5.0.6 を使用していますが、Android アプリケーション内で認証の問題が発生しています。

この認証構成を使用して安全なアプリを作成しました。

<securityTests>
    <mobileSecurityTest name="Sencha22-Mobile-SecurityTest">
        <testDeviceId provisioningType="none"/>
        <testUser realm="SampleAppRealm"/>
    </mobileSecurityTest>
</securityTests>

<realms>
    <realm loginModule="StrongDummy" name="SampleAppRealm">
    <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className>
    </realm>
</realms>

<loginModules>
    <loginModule name="StrongDummy">
        <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
    </loginModule>
</loginModules>

次のような ChallengeHandler もあります。

challengeHandler.submitLoginFormCallback = function(response) {
var isLoginFormResponse = challengeHandler.isCustomResponse(response);
if(isLoginFormResponse){
    //login unsuccessful
    Ext.Msg.alert('Error', "Login not successful", Ext.emptyFn);
}else{
    //login successful, reload the app
    WL.Client.reloadApp();
}
}

認証が行われた後、WL.Client.reloadApp() ステートメントは正しく実行されますが、関数は次のようになります。

WL.Client.isUserAuthenticated("SampleAppRealm")

Androidでは常にNULLを返します。

Chrome で共通リソースとして表示すると、アプリケーションは正常に動作します。

Android で isUserAuthenticated に問題はありますか?

4

2 に答える 2

1

isUserAuthenticated は 5.0.6 では常に true または false を返し、完全に JavaScript ベースです (したがって、プラットフォームに関係なく一貫している必要があります)。NULL を取得するためにここで何か他のことが起こっていると思います... JavaScript の例外はありますか? 確認する 1 つの方法は、weinre などの Android デバイスで JavaScript デバッグ ライブラリを使用することです (HTML に JavaScript ファイルを追加し、ローカル サーバーに接続してコンソール出力をデバッグします: http://people.apache.org/~pmuellr/ weinre/docs/latest/ )。JavaScript の出力に例外がスローされているかどうかを確認します。アントンが言ったように、デバイスでタイミングの問題が発生している可能性もあります.

補足: Anton は正しいです: WL.Client.reloadApp() は、デバイスまたはブラウザーの設定に基づいて認証状態をクリアする場合があります。

于 2013-05-16T14:55:17.287 に答える