何らかの JavaScript を使用する必要があります。サーバーには、クライアント側の何らかのスクリプト (明らかに JavaScript) を使用して要求を処理しないと、クライアント Web ページを更新する機能がありません。ポップアップメッセージを表示してセッションを維持したいかどうかをユーザーに尋ねて、同様のことをしました。しかし、あなたの場合、再ログイン用の DNN ページを作成し、ログインを確認したいすべてのページにカスタム モジュールまたは単純な JavaScript を含む HTML ブロックを追加する (またはテンプレートのヘッダーまたはフッターに配置する) 必要があるようです。これにより、ユーザーは再ログイン画面にリダイレクトされます。何かのようなもの:
function setHeartbeat() {
setTimeout("heartbeat()", 300000); // every 5 min
}
function heartbeat() {
window.location.href = "Relogin.aspx?LastPage=" + window.location.href;
}
次に、Relogin.aspx の上部に、ユーザーが 3 分間アイドル状態だったことを示すメッセージが表示され、パスワード ボックスが表示されます。ユーザーがログインした後、LastPage にリダイレクトできます (DNN を使用してからしばらく経ちましたが、URL をフォーマットして自動的にリダイレクトする方法があると思います)。
よりユーザー フレンドリーなオプションは、3 分後にポップアップを表示し、メッセージとパスワード フィールドに [OK] ボタンを表示することです。繰り返しますが、これは次のような jQuery で実行できます。
<div id="confirmSession" style="display: none">
<p class="message" style="display: none;"></p>
<p>You have been idle for 3 minutes, if you want to continue your session please re-enter your password.</p>
<p>Password: <input type="password" id="password" /></p>
<input type="button" id="btnContinueSession" />
<input type="hidden" id="userName" value='<%# HttpContext.Current.User.Principal.Identity %>' />
</div>
および次の JavaScript:
function setHeartbeat() {
setTimeout("heartbeat()", 300000); // every 5 min
}
function heartbeat() {
$("#confirmSession").show();
}
$("#btnContinueSession").click(function () {
$.ajax({
type: "post",
url: "/relogin.aspx",
error: function(returnval) {
// Login failed for some reason, typically page not available 404 error, or code threw an error. so have the user try again.
$(".message").text(returnval + " failure");
$(".message").show();
},
success: function (returnval) {
$("#confirmSession").hide();
setHeartbeat();
}
});
});
ここで、relogin.aspx ページまたはユーザー名とパスワードを取得する他のサービスを作成し、ユーザーを再検証し、パスワードが無効な場合はエラーをスローする必要があります (上記の jQuery でキャッチされ、次のように表示されます)。ユーザー)。これは明らかにもう少し手間がかかり、単純にログイン画面にリダイレクトするのではなく、検証用のカスタム コーディングが必要になりますが、はるかにユーザー フレンドリーです。
この Ajax アプローチでは、サーバー セッションのタイムアウトを 3 分より長くする必要がある場合があることに注意してください。3 分以内にユーザーがパスワードを入力すると、ユーザーは既にサーバーからログアウトされており、無効な認証エラーが発生します。そのため、ログイン ページへの全体的なリダイレクトが最も理にかなっています。ただし、ユーザーがデータを入力した場合は、そのデータを Cookie などに保存して、再入力できるようにする必要があります (何百回もの人々がデータが「失われた」ことに不満を感じていると聞いています)。 」)。
私が取った例は次のとおりです。