2014-05-20 2 views
2

AngularJS를 사용하여 구현하려는 어댑터 기반 인증을 사용하고 있습니다. 응용 프로그램과 모든 절차를 보호하는 단일 영역이 있습니다.IBM Worklight 6.1 - Angularjs 컨트롤러의 챌린지 처리기

참고 : 나는 인증 관련 활동을 처리하는 로그인 컨트롤러 정의한 WL.Client.connect() 발행에 크롬과 작업등을 개발 서버

$scope.sampleAppRealmChallengeHandler = WL.Client.createChallengeHandler("LoginBluePageRealm"); 
$scope.sampleAppRealmChallengeHandler.isCustomResponse = $scope.isCustomResponse; 
$scope.sampleAppRealmChallengeHandler.handleChallenge = $scope.handleChallenge;  

[로그인보기 때문에 표시되는 초기 도면에 MBS와 테스트를하고, 인증 자격 증명을 잘 수집하고 로그인보기에서 기본 메뉴보기로 전환합니다.

(WL dev 서버를 다시 시작하여) 서버 연결이 실패하고 응용 프로그램에서 보호 된 어댑터 호출을 호출 할 활동을 선택합니다. JavaScript 콘솔에서 $scope.isCustomResponse()에 도달했음을 알았지 만 $scope.handleChallenge();에 항목이 없습니다.

$ scope에서 챌린지 지원을 정의하는 데 문제가 있습니까? 아니면 $ rootScope 수준에서 정의해야한다는 요구 사항이 있습니다.

AngularJS 내에서 인증을 정의하는 조언을 이해하십시오.

+0

문제가있는 데모 프로젝트를 제작할 수 있습니까? –

답변

0

isCustomResponse에 로그를 추가하여 실제로 얻은 결과의 responseText/responseJson 속성을 볼 수 있습니까? 또한 isCustomResponse에서 true/false를 반환하기 전에 응답을 기록하십시오. isCustomResponse가 false를 반환하는 경우 handleChallenge 함수가 호출되지 않으므로 일부가 누락 될 수 있습니다.

0

일반적으로 $ scope를 통해 Angular로 유지하려는 자바 스크립트 객체를 정의하면 안됩니다. 각도는 언제든지 $ 범위 변수를 파괴 할 수 있습니다. 대신 챌린지 핸들러를 Angular 서비스/팩토리 정의로 랩핑하십시오. 이러한 핸들러는 지속되는 싱글 톤이므로 무시하십시오. 이것은 Worklight + Angular를 시청하는 것이 좋습니다 좋은 비디오입니다. https://www.youtube.com/watch?v=a89W_atlhjg