Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 在Windows身份验证-ASP.Net中,强制用户在会话清除后重新登录_Javascript_Asp.net Mvc_Windows Authentication - Fatal编程技术网

Javascript 在Windows身份验证-ASP.Net中,强制用户在会话清除后重新登录

Javascript 在Windows身份验证-ASP.Net中,强制用户在会话清除后重新登录,javascript,asp.net-mvc,windows-authentication,Javascript,Asp.net Mvc,Windows Authentication,这些要求是: 会话清除后,将用户发送回主页,并使用Windows身份验证提示强制他们重新登录 当前情况: 我有一个javascript倒数计时器,当它达到0时,会发送一个警报,表示会话结束。我希望能够通过Javascript或回发到服务器,清除用户的凭据 我读过/尝试过的内容: AJAX发送到服务器设置HttpContext.Response并引发HttpException(401) 这两种方法似乎都不适用于AJAX,我不确定如何使一个不涉及提交的控制器操作定期返回帖子 问题: 如何强制用户重新

这些要求是:

会话清除后,将用户发送回主页,并使用Windows身份验证提示强制他们重新登录

当前情况:

我有一个javascript倒数计时器,当它达到0时,会发送一个警报,表示会话结束。我希望能够通过Javascript或回发到服务器,清除用户的凭据

我读过/尝试过的内容:

AJAX发送到服务器设置HttpContext.Response并引发HttpException(401)

这两种方法似乎都不适用于AJAX,我不确定如何使一个不涉及提交的控制器操作定期返回帖子

问题:


如何强制用户重新验证其windows身份验证凭据,而不使用Active-X或更改其IE设置?附加问题:如何在不使用submit或AJAX的情况下从javascript发回MVC控制器操作?

下面是我的一些评论示例


如果你能通过一个get请求逃脱惩罚-

控制器:

[HttpGet]
public ActionResult ForceRelogin()
{
    // Would you maybe just throw a new unauthorized HttpException exception?
    // throw new HttpException(401, "Forbidden");
    // But try to invalidate the session and then do a redirect to the login page
    return new HttpStatusCodeResult(HttpStatusCode.Unauthorized);
}
[HttpPost]
public ActionResult ForceRelogin()
{
    // Would you maybe just throw a new unauthorized HttpException exception?
    // throw new HttpException(401, "Forbidden");
    // But try to invalidate the session and then do a redirect to the login page
    return new HttpStatusCodeResult(HttpStatusCode.Unauthorized);
}
Javascript:

<script type="text/javascript">
   ...

   var redirectToLogin = function() { 
      window.location.href = "http://foo.com/login/ForceRelogin";
   }

   ...
</script>
Javascript和Html:

<script type="text/javascript">
   ...

   var redirectToLogin = function() { 
      var form = document.getElementById("formFoo");
      form.submit();
   }

   ...
</script>

<form id="formFoo" action="http://foo.com/login/ForceRelogin">
   ...
</form>

...
var redirectToLogin=函数(){
var form=document.getElementById(“formFoo”);
表单提交();
}
...
...


但我不完全确定您将如何使用户会话无效?返回未经授权的错误代码可能会帮助您重定向到登录页面,但用户可以按“上一步”按钮,然后继续浏览。如果这不是您关心的问题,那么您也可以直接将用户重定向到登录页面。我确实找到了这篇文章,也许你需要遵循类似的方法,基本上它包括发送一个无效的登录尝试:

我不知道MVC,所以mutch,但你是否尝试过用401(未经授权)进行响应?我尝试过,只是再次尝试,没有效果。我认为我的问题的一部分是我在做一个AJAX调用,它会吃掉我抛出的任何类型的异常。显然,我还没有看过这部作品,所以可能是我做错了什么。只是为了确定。您尝试返回HttpStatusCodeResult,而不是在tour示例中抛出异常,对吗?如果是,也许您可以在js回调中验证状态代码。如果是401 redirecto登录,可能是“玩把戏”。啊,我明白你的意思了,我用代码返回了一个HttpStatusCodeResult。未经授权,仍然无效。当我想让它进入浏览器时,我仍然认为它正在被AJAX调用吞噬。除了AJAX,还有其他方法可以从Javascript调用此控制器操作吗?对不起,我对MVC不太了解
<script type="text/javascript">
   ...

   var redirectToLogin = function() { 
      var form = document.getElementById("formFoo");
      form.submit();
   }

   ...
</script>

<form id="formFoo" action="http://foo.com/login/ForceRelogin">
   ...
</form>