2013-05-14 3 views
0

Android 응용 프로그램 내에서 인증에 문제가 발생했습니다. Worklight 버전 5.0.6을 사용하고 있습니다. 나는 또한 다음과 ChallengeHandler이Android 및 isUserAuthenticated에서 Worklight 인증 관련 문제

<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.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") 

i ■ Android에서 NULL을 항상 반환합니다.

Chrome의 공통 리소스로 볼 때 응용 프로그램이 정상적으로 작동합니다.

안드로이드에서 isUserAuthenticated에 문제가 있습니까?

답변

1

우선, 인증 후 응용 프로그램을 다시로드하는 것은 좋은 생각이라고 생각하지 않습니다. . 응용 프로그램이 응용 프로그램에 연결되면 인증 정보가 WL 서버에서 수신됩니다. WL 서버에 연결하려면 initOptions.js에서 connectOnStartup : true를 설정하거나 WL.Client.connect() API를 사용해야합니다. 당신은 문제가 안드로이드에만 발생한다고 말하고 있기 때문에 타이밍 문제가 있다고 생각합니다. 클라이언트가 서버로부터 응답을 성공적으로받은 후에 isUserAuthenticated API를 호출하는지 확인하십시오.

+0

답장을 보내 주셔서 감사합니다. var wlInitOptions = {connectOnStartup : true} initOptions.js 파일에 있으며 앱이 시작시 성공적으로 연결 중입니다. 시퀀스 문제는 맞지만 응용 프로그램이나 로그인 페이지를 표시하려면 isUserAuthenticated()를 테스트하고 싶습니다. – AJW

1

isUserAuthenticated는 5.0.6에서 항상 true 또는 false를 반환하며 완전히 자바 스크립트 기반이므로 플랫폼에 관계없이 일관성을 유지해야합니다. 나는 뭔가 널 위해 여기에 어떤 일이 일어나고 있다고 생각한다. 자바 스크립트 예외가 있는가? 한 가지 방법은 weinre (자바 스크립트 파일을 HTML에 추가 한 다음 콘솔 출력을 디버그하기 위해 로컬 서버에 연결 : http://people.apache.org/~pmuellr/weinre/docs/latest/)와 같은 Android 디바이스에서 자바 스크립트 디버깅 라이브러리를 사용하는 것입니다. 자바 스크립트 출력에 예외가 발생했는지 확인하십시오. Anton가 말했듯이, 장치에 타이밍 문제가 발생할 수도 있습니다.

사이드 노트 : Anton입니다. WL.Client.reloadApp()는 장치 또는 브라우저의 설정에 따라 인증 상태를 지울 수 있습니다.