Javascript 如果用户未经授权,则触发jQuery UI对话框
在我的网站上,我有两种登录方式。第一个命令被使用,然后用户按下登录按钮,这将触发一个jqueryui对话框打开。第二个是普通视图,如果用户未经授权,则使用该视图重定向到普通登录视图。但我喜欢做的是,如果用户未经授权,它会打开登录jqueryui对话框,而不是重定向到用户想要的视图 这就是我当前打开对话框的方式Javascript 如果用户未经授权,则触发jQuery UI对话框,javascript,jquery-ui,authentication,asp.net-mvc-4,Javascript,Jquery Ui,Authentication,Asp.net Mvc 4,在我的网站上,我有两种登录方式。第一个命令被使用,然后用户按下登录按钮,这将触发一个jqueryui对话框打开。第二个是普通视图,如果用户未经授权,则使用该视图重定向到普通登录视图。但我喜欢做的是,如果用户未经授权,它会打开登录jqueryui对话框,而不是重定向到用户想要的视图 这就是我当前打开对话框的方式 $(".openLoginDialog").on("click", function (e) { e.preventDefault(); $("<div>&l
$(".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);
});
最后一种方法是重定向到一个拒绝访问的页面,该页面只有一个白色背景,在加载时打开一个对话框 看看这个例子:
请注意,
autoOpen:false
我有一个MVC intranet解决方案,它使用的功能与您描述的类似,但是它使用的是windows auth而不是窗体
基本上我在索引中有这样的东西
var userExists = "@ViewBag.User";
// require the user to register if they are not found
if (userExists == "") {
$.get('Home/Register/', function (data) {
$("#Register").html(data);
$("#Register").dialog({
resizable: false,
closeOnEscape: false,
dialogClass: 'no-close',
typeDelay: 250
});
});
}
然后在控制器中,我将“ViewBag.User”设置为用户名(如果存在)。我不熟悉asp.net,因此无法帮助实际实现。一种方法是检查请求来自何处,如果用户未获得授权,则将其重定向回该页面,并使用对话框点击它们 另一种方法是知道用户在页面加载时是否经过身份验证,并覆盖需要身份验证的链接
$(".authRequired").on("click", function (e) {
e.preventDefault();
//fancy logic here to load form and dialog
});
var userExists = "@ViewBag.User";
// require the user to register if they are not found
if (userExists == "") {
$.get('Home/Register/', function (data) {
$("#Register").html(data);
$("#Register").dialog({
resizable: false,
closeOnEscape: false,
dialogClass: 'no-close',
typeDelay: 250
});
});
}
$(".authRequired").on("click", function (e) {
e.preventDefault();
//fancy logic here to load form and dialog
});