[英]javascript popup blocker and ajax callback - C# MVC app
在將表單發布到url的安全網站中,有兩個要求:
我已經盡力編寫一個ajax操作來獲取關於auth是否仍然有效的正確答案。 但是我無法使重定向代碼超出腳本執行上下文的范圍,因此避免了彈出窗口阻止程序 。 請幫忙!
JavaScript:
$('#someSystem').click(function () {
//deferred promise?
auth().done(function (result) {
//need to move below code outside this callback without side effects
if (result == 'true') {
var form = $('#ssoForm');
form.submit();
}
else {
window.location.href = "/account/login";
}
});
return false;
});
function auth() {
return $.ajax({ url: '/account/isauthenticated', method: "POST" });
}
已驗證用戶的HTML
<form action="/sso/somesystem" id="ssoForm" method="post" target="_blank">
...
<div id="someSystem">Continue</div>
</form>
我認為您除了調整彈出框來避免出現這種情況外,將無能為力。 如果js能夠做到這一點,它將幾乎完全破壞了阻止程序的目的。 您還應該考慮在js中進行重定向的安全性,因為代碼在用戶空間中。 用戶可以從他們的瀏覽器中取消重定向。
相反,為什么不對服務器進行檢查並使用
RedirectToAction()
在閱讀了幾篇jQuery文章甚至是SignalR之后, 這篇codeproject.com文章對我的案例來說是最有用的。 似乎有一種更簡單的方法來處理此問題。 開發人員不知道認證在給定時間是否有效,但是肯定知道認證將過期多長時間 。 可以使用JavaScript對這些知識進行硬編碼,並且可以搶先將警報發送給用戶( setTimeout
),而不是等待用戶單擊然后嘗試找出。 這種方法不會讓我打擾彈出窗口阻止程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.