1

현재 Worklight 응용 프로그램에 대한 어댑터 기반 인증을 구현 중입니다. 기록을 위해 Worklight 버전 5.0.6.1을 사용하고 있습니다.Worklight 어댑터 기반 인증을 사용할 때 로그 아웃되는 사용자의 userIdentity를 얻는 방법

설명서에서 알 수 있듯이 인증 어댑터의 "로그 아웃"기능에서 정리를 수행하고 싶습니다.

따라서 Worklight 프레임 워크에서 자동으로 호출되는 logout 함수 내에서 로그 아웃중인 사용자에 대한 정보가 들어있는 userIdentity 객체를 검색하고 싶습니다. "WL.Server.getActiveUser()"를 호출하여이 작업을 시도했지만 logout 함수에서이 작업을 수행 할 수없는 것으로 보입니다.

내가 로그에 다음과 같은 예외 (는 WebSphere 응용 프로그램 서버 7)를 볼 수 있습니다

[9/3/13 17:13:11:683 IST] 00000039 DataAccessSer 1  com.worklight.integration.services.impl.DataAccessServiceImpl invokeProcedureInternal Procedure 'onLogout' invocation failed. Runtime: Adapter 'onLogout' security test has no user realm.java.lang.RuntimeException: Adapter 'onLogout' security test has no user realm. 
이 뒤에 아이디어는 제가 DB에서 정리 작업을 수행 할 외부 REST 서비스를 호출 할 것입니다

, 모바일 애플리케이션 userId가이 서비스의 매개 변수로 전달되어야합니다.

인증 어댑터 로그 아웃 기능에서 로그 아웃되는 사용자의 신원을 검색하려면 모범 사례를 알려주시겠습니까?

감사합니다.

답변

3

Adapter.onLogout()이 호출되기 전에 기본 인증 프레임 워크에서 사용자 ID가 파괴됩니다. 결과적으로 Adapter.onLogout()이 호출 될 때 사용자 ID가 더 이상 존재하지 않습니다. 따라서 WL.Server.getActiveUser()는 null을 반환하거나 예외를 throw합니다 (사용자 영역이 정의되어 있지 않아 예외가 발생 했음).

기본 인증 프레임 워크가 삭제 한 후에도 여전히 userIdentity의 데이터가 필요한 경우 (그리고 이것이 사용자의 경우) 세션 상태에서 userIdentity를 저장할 수 있습니다. 그러나 수동으로 저장하기 때문에 기억할 필요가 있습니다. 더 이상 필요하지 않게되면 초기화하는 것은 사용자의 책임입니다. 따라서, 일반 어댑터 ​​흐름과의 주요 차이점은 submitCredentials() 함수의 범위에 있지만, 전역 변수로 생성되지 않도록 userIdentity 객체 인

/* global var, not inside of any function*/ 
var userIdentity = null; 

function submitCredentials(user, pass){ 
    if (/*validate credentials*/){ 

     /* using previously created global var, not declaring it again */ 
     userIdentity = { 
      userId:user, 
      displayName:user 
     }; 
     WL.Server.setActiveUser("realm", userIdentity); 
    } 
} 

function onLogout(){ 
    /* do your stuff with userIdentity object and then wipe it*/ 
    userIdentity = null; 
} 

:

그래서 어댑터 코드는 다음과 같을 것이다 그것은 세션 범위 var입니다.

+0

감사합니다. Anton! 귀하의 의견을하기 전에 나는 각 인증 된 사용자가 고유 한 어댑터 인스턴스를 가지고 있다는 것을 알지 못했습니다. –

+0

은 인증 될뿐만 아니라 인증 상태에 관계없이 각 세션마다 고유 한 어댑터 인스턴스가 있습니다. – Anton