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