在我的網站上,我有兩種登錄方式。第一個被使用,然後用戶推動登錄按鈕,這觸發了jQuery UI對話框的打開。第二種是普通視圖,如果用戶未被授權,則使用該視圖,該用戶重定向到正常的登錄視圖。但是我喜歡做的是,如果用戶沒有授權,它會打開登錄jQuery UI對話框,而不是重定向到用戶所期望的視圖。如果用戶未授權,觸發jQuery UI對話框
這就是我目前正在打開的對話框中,
$(".openLoginDialog").on("click", function (e) {
e.preventDefault();
$("<div></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
title: $(this).attr("data-dialog-title"),
create: function (event, ui) {},
close: function() { $(this).remove() },
open: function (event, ui) {},
modal: true,
position: ['center', 130],
minWidth: 510,
resizable: true,
zIndex: 20000
})
.load(this.href);
});
由於該對話框中的內容是partialView,它被稱爲是這樣的:
<div class="items iconlogin highligth-br"><a class="openLoginDialog" data-dialog-id="LoginDialog" data-dialog-title="Login" href="@Url.Action("LogOn", "Authentication", new { returnUrl = Request.Url.ToString() })">Login</a></div>
還幫我控制不授權,我已覆蓋此調用。
public override void OnAuthorization(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "Authentication", action = "AccessDenied" }));
}
最後的手段是重定向到訪問被拒絕的頁面,只有一個白色的背景,在加載時打開一個對話框。