フォーム認証によるタイムアウト時。ajaxがターゲットID属性を更新したため、ログインページ全体がdiv内でレンダリングされます。divタグでレンダリングする代わりに、タイムアウト認証後にログインページが新しいウィンドウで開く解決策はありますか?
必要に応じてコード全体を提供できます。私の人々を助けてください。
前もって感謝します!
フォーム認証によるタイムアウト時。ajaxがターゲットID属性を更新したため、ログインページ全体がdiv内でレンダリングされます。divタグでレンダリングする代わりに、タイムアウト認証後にログインページが新しいウィンドウで開く解決策はありますか?
必要に応じてコード全体を提供できます。私の人々を助けてください。
前もって感謝します!
作業中のWebアプリでも同じ問題が発生しました。必要なログインフィールドのみを含む部分ビューでログインコントローラを設定する必要があります。アプリがタイムアウトすると、ログインコントローラーにリダイレクトされ、必要なフィールドのみを含む部分的なビューが返されます。また、JQueryまたはJSを使用して、このページに表示することに関心のないすべての要素を非表示にすることができます。
タイムアウトのためにWeb設定でログインコントローラを設定することを忘れないでください
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="9000" />
</authentication>
お役に立てれば。
ついに私は別の方法を手に入れました
ログオンアクションで、カスタム応答HTTPヘッダーを追加できます。
public ActionResult LogOn(){
{
var model = ...
Response.AppendHeader("X-LOGON", "Checked");
return View(model);
}
次に、完全なイベントをサブスクライブし、このヘッダーの存在をテストして、それに応じて動作します。
$.ajax({
url: '/home/some_protected_action',
success: function (data, textStatus, XMLHttpRequest) {
if (XMLHttpRequest.getResponseHeader('X-LOGON') === 'Checked') {
// the LogOn page was displayed as a result of this request
// probably timeout => act accordingly
window.location = '<%=Url.Content("~/Account/LogOn") %>';
window.location.reload();
}
}
});