如何在IBM Mobilefirst中更新(更改)UserIdentity

时间:2016-07-12 11:08:57

标签: ibm-mobilefirst mobilefirst-server

我正在尝试使用不同的凭据更改用户身份。它可以通过领域成功登录,但新的Userid没有在Mobilefirst控制台中更新。控制台仍显示旧的用户ID。

我正在使用以下代码。

function submitAuthentication(username, password){

         userIdentity = {
                userId: username,
                displayName: "sample", 
                attributes: {
                    foo: "bar"
                }
        };


        WL.Server.setActiveUser("AuthRealm", null);
        WL.Server.setActiveUser("AuthRealm", userIdentity); 

        return { 
            authStatus: "complete" ,
                result: "Success"
        };
//  }
}

我刚看到android客户端下面的错误,challengehandler类/ handleChallenge方法

 07-12 07:14:34.265 13001-13078/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.worklight.wlclient.WLRequest.shouldFailOnChallengeCancel()' on a null object reference


07-12 07:14:34.266 13001-13078/com.mfp W/System.err:     at com.worklight.wlclient.api.WLClient$InvokeProcedureRequestListener.onFailure(WLClient.java:1376)
07-12 07:14:34.266 13001-13078/com.mfp W/System.err:     at com.worklight.wlclient.WLRequest.triggerUnexpectedOnFailure(WLRequest.java:337)
07-12 07:14:34.266 13001-13078/com.mfp W/System.err:     at com.worklight.wlclient.WLRequest.requestFinished(WLRequest.java:295)
07-12 07:14:34.266 13001-13078/com.mfp W/System.err:     at com.worklight.wlclient.WLRequestSender.run(WLRequestSender.java:52)
07-12 07:14:34.266 13001-13078/com.mfp W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
07-12 07:14:34.266 13001-13078/com.mfp W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
07-12 07:14:34.266 13001-13078/com.mfp W/System.err:     at java.lang.Thread.run(Thread.java:818)
07-12 07:14:34.333 13001-13007/com.mfp W/art: Suspending all threads took: 66.075ms

以下是问题

调用submitSuccess()时,BaseChallengeHandler中的

activeRequest(WLRequest对象)为null;在ChallengeHandler中 这就是我遇到错误的原因。我无法解决主要问题,但我能够解决上述错误。

以下地点是activeRequest未获得正确价值的地方。 由于request.getOptions()。isFromChallenge()始终为true,因此activeRequest的值未设置为正确的值。此后为null。

所以我将挑战视为虚假。

public void startHandleChallenge(WLRequest request, T challenge) {
        synchronized(this) {
            if(!request.getOptions().isFromChallenge()) {
                if(this.activeRequest != null) {
                    this.requestWaitingList.add(request);
                    return;
                }

                this.activeRequest = request;
            }
        }

        this.handleChallenge(challenge);
    }

0 个答案:

没有答案