0

mfp.auth.service.tsファイル内のコードは次のとおりです。

performLogin(username: string, loginRequest: RequestModel<LoginRequestModel>): Observable<any> {
        let mfpAuthResponse: any;
        let userLoginChallengeHandler = WL.Client.createSecurityCheckChallengeHandler(this.securityCheckName);
        (userLoginChallengeHandler as any).securityCheckName = this.securityCheckName;
        console.log("this.securityCheckName is " + this.securityCheckName);
        userLoginChallengeHandler.handleSuccess = (loginSuccess) => {
            console.log("handleSuccess mfpAuthResponse is " + mfpAuthResponse);
            if (!mfpAuthResponse) {
                console.log("handle here");
                mfpAuthResponse = {
                    id: loginSuccess.id,
                    accessToken: loginSuccess.user.attributes.access_token,
                    tokenType: loginSuccess.user.attributes.token_type,
                    expiresIn: loginSuccess.user.attributes.expires_in,
                    scope: loginSuccess.user.attributes.scope,
                    clientId: loginSuccess.user.attributes.client_id
                };
            }
        };
        console.log("line 41");
        userLoginChallengeHandler.handleFailure = (loginError) => {
            console.log("handleFailure " + loginError);
            if (!mfpAuthResponse) {
                mfpAuthResponse = loginError;
            }
        };

        let authRequest = {
            requestHeader: {
                deviceId: this.sessionService.getDeviceId(),
                channelTime: new Date().toISOString()
            },
            requestBody: loginRequest.requestBody
        }
        this.currentLoginGrantType = loginRequest.requestBody.grant_type;
        console.log("ready to return ");
        return from(new Promise(
            (resolve, reject) => {
                console.log("line 60");
                WLAuthorizationManager.login(this.securityCheckName,
                    {
                        'authorization': environment.authorization,
                        'authRequest': JSON.stringify(authRequest),
                        'authCode': this.service.getHashMAC(authRequest, this.sessionService.getHashKey()),
                        'authUser': username
                    }
                ).then(
                    (res) => resolve(mfpAuthResponse),
                    (err) => reject(mfpAuthResponse)
                );
            }
        ));
        console.log("line 79 end");
    }

最初は、mfp 開発者キットを使用していますが、正常に動作し、アプリにログインしてランディング ページを表示できます。WLAuthorizationManager.login()ログを入れると、 に移動しhandleSuccess、ログインが成功したことを示す部分に移動することがわかります。これ以外に、リクエストがバックエンド サービスに入ることも確認できvalidateCredentials()ますUserAuthentication.java。仕組みがよくわかりませんが、これから勉強していきます。

次に、mfp 開発者キット サーバーを停止し、Installation Manager をインストールし、WebSphere Application Server Liberty Core をインストールしてから、適切な IBM Web サイトからダウンロードした MobileFirst Server をインストールします。私はこの Web サイトでこのベースを行っています: https://www.ibm.com/support/knowledgecenter/SSHS8R_8.0.0/com.ibm.worklight.installconfig.doc/install_config/t_install_mfp_server_cmdline_mode.html?view=embed#t_install_mfp_server__1

適切な複合機サーバーを使用している場合、アプリにログインできないことがわかりました。コンソール ログに基づいてconsole.log("line 60 " + this.securityCheckName);handleSuccess. また、validateCredentials今言及したバックエンド コードには至りませんでした。mfp サーバー ログにエラーはなく、バックエンド サービス API ログにもエラーはありません。Androidフォンの要素を検査するために使用するクロムにもエラーはありません。に何か問題があると思われWLAuthorizationManager.login()ますが、エラー ログがなく、追跡して修正する方法がわかりません。

適切な mfp サーバーで構成する必要があるものがあると思われますか? コードが正常に動作しているため、mfp 開発者キット サーバーを使用している場合。(mfp 開発者キット サーバーは、インストールする 1 つのコマンドにすぎません。適切に構成するのに既に役立っていると思います。)

私は mfp と typescript を初めて使用しますが、数日間グーグルで調べた後でも、これを修正する方法がわかりません。これについて親切にアドバイスしてください。

4

1 に答える 1

0

私のように問題を抱えている人にとって、私は最終的に何が問題なのかを見つけます。Mfp 8.0 ベースは 2016 年以降で、2020 年 1 月に IBM から提供されたフィックスパックをインストールしたところ、問題は解決しました。2016年以降、AndroidとIOSのコードはすでに更新されていると思われるため、修正パックをインストールしないとこのバグが発生します。

于 2020-02-12T04:08:36.423 に答える