カスタマーポータルのユーザが、質問ページからインシデントを送信する前にログアウトされるのはなぜですか?
環境:
>November 2012 >バージョン, カスタマポータル
問題:
>エンドユーザーはカスタマーポータルにログインでき、ログインは成功しています(cp_profile cookieが設定されています)。 しかし、約2分後、エンドユーザーは、問い合わせページでインシデントを送信している最中にログアウトされてしまいます。
解決策:
>カスタマーポータルのログインデータは、連絡先テーブルに保存されます。 連絡先パスワードは期限切れになる可能性があります。 有効期限設定はここで設定することができます:
>パスワードの有効期限が切れると、デフォルトの動作は次のようになります:
>エンドユーザーは有効期限が切れたパスワードでログインを試みます。 すぐに使えるログインフォームウィジェット(standard / login / LoginForm2)はユーザーに2分間の特別なcp_profileクッキーを与え、パスワードリセットページ(設定動詞CP_CHANGE_PASSWORD_URLによって定義される)にリダイレクトします。その後、ユーザーは自分のパスワードをリセットし、そのページからリセット要求を送信するまで2分かかります。この時点で、ユーザーには期待される有効期限(設定動詞CP_LOGIN_COOKIE_EXPで定義)の通常のcp_profile Cookieが付与されます。
>上記の問題は、LoginFormウィジェットをカスタマイズし、サーバーからの「期限切れパスワード」応答を処理する機能を保持していない場合に発生する可能性があります。
>有効期限が切れたパスワードのシナリオでの/ ci / ajaxRequest / doLoginからのサンプルログイン応答:
{"w_id":"*Your custom widget ID*","success":1,"addSession":false,"sessionParm":"","url":"\/app\/utils\/login_form\/redirect\/home","message":"Redirecting...","forceRedirect":"\/app\/account\/change_password\/msg\/Your current password has expired. Please set a new one."}
すぐに使える標準機能ログインフォームウィジェットのJavaScript(standard / login / LoginForm2 / logic.js)は、このリダイレクトを_getRedirectURL関数内の他のリダイレクトより優先させることで、forceRedirectパラメータを処理します。
/**
* Function used to parse out the URL where we should redirect to
* after a successful login
* @param result Object The response object returned from the server
* @return String The URL to redirect to
*/
_getRedirectUrl: function(result){
var redirectUrl;
if(this.data.js && this.data.js.redirectOverride)
redirectUrl = RightNow.Url.addParameter(this.data.js.redirectOverride, 'session', result.sessionParm.substr(result.sessionParm.lastIndexOf("/") + 1));
else
redirectUrl = (this.data.attrs.redirect_url || result.url) + ((result.addSession) ? result.sessionParm : "");
redirectUrl += this.data.attrs.append_to_url;
if (result.forceRedirect)
redirectUrl = RightNow.Url.addParameter(result.forceRedirect, 'redirect', encodeURIComponent(redirectUrl));
return redirectUrl;
},
カスタムログインフォームウィジェットが "forceRedirect"パラメータを処理していない場合、期限切れのパスワードを持つユーザーには2分間のCookieが与えられますが、パスワードを更新できるようにするためにパスワードのリセットページにリダイレクトされません。 。 その結果、彼らは2分後に(エンドユーザー側から見ると)不可解にログアウトされるでしょう。
これを解決するための適切な方法は、「forceRedirect」パラメータを適切に処理するようにカスタムログインフォームウィジェットを更新することです。