Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果用户未经授权,则触发jQuery UI对话框_Javascript_Jquery Ui_Authentication_Asp.net Mvc 4 - Fatal编程技术网

Javascript 如果用户未经授权,则触发jQuery UI对话框

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

在我的网站上,我有两种登录方式。第一个命令被使用,然后用户按下登录按钮,这将触发一个jqueryui对话框打开。第二个是普通视图,如果用户未经授权,则使用该视图重定向到普通登录视图。但我喜欢做的是,如果用户未经授权,它会打开登录jqueryui对话框,而不是重定向到用户想要的视图

这就是我当前打开对话框的方式

 $(".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
 });