2013-05-08 42 views
2

的要求是:會話清除強制用戶會話在Windows身份驗證後清零重新登錄 - ASP.Net

後,向用戶發送回主頁,並迫使他們使用Windows重新登錄驗證提示。

現狀:

我有一個JavaScript倒數計時器,當它擊中0,發送警報說會話結束。我希望能夠做的是無論是通過JavaScript或回發到服務器是什麼,明確用戶的憑據

我讀過/試過:

AJAX後到服務器設置HttpContext.Response,並投擲一個HttpException(401)

[HttpPost] 
    public ActionResult ForceRelogin() 
    { 
     //HttpContext.Response.StatusCode = 401; 
     //HttpContext.Response.End(); 
     //return RedirectToAction("Index", "Home"); 
     //throw new HttpException(401, ""); 
     return new HttpStatusCodeResult(HttpStatusCode.Unauthorized); 
    } 

的這些似乎都沒有用AJAX來工作,我不能確定如何使普通郵寄回控制器的行動,不涉及提交。

問:

如何強制用戶重新進行身份驗證其Windows身份驗證憑據,而不使用Active-X或改變他們的IE設置?獎金問題:如何在不使用提交或AJAX的情況下從javascript回發到MVC控制器操作?

+0

我不知道MVC如此mutch,但你有沒有嘗試做[HttpStatusCodeResult] (http://msdn.microsoft.com/en-us/library/system.web.mvc.httpstatuscoderesult(v=vs.98).aspx)與401(未授權)? – 2013-05-08 15:58:04

+0

我有,只是再試一次沒有效果。我在想,我的問題的一部分是,我正在做一個AJAX調用,它正在吃掉我拋出的任何異常。顯然,我還沒有看到這項工作,所以它可能是我做錯了什麼。 – DeiasR 2013-05-08 16:08:48

+0

只是爲了確定。您試圖返回HttpStatusCodeResult,而不是在巡迴示例中拋出異常,對吧?如果是的話,也許你可以在你的js回調中驗證狀態碼。如果它是401重定向到登錄也許「做詭計」。 – 2013-05-08 16:16:34

回答

0

下面是我的評論的一些例子。


如果你能逃脫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); 
} 

的Javascript:

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

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

    ... 
</script> 

或者如果你需要做到這一點的一個POST,然後執行: 控制器:

[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 & 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> 

我不完全相信你會怎麼雖然無效用戶會話?返回未經授權的錯誤代碼可能會幫助您重定向到登錄頁面,但用戶可以按下後退按鈕,然後繼續瀏覽。如果這不是您的擔憂,那麼您可以直接將用戶重定向到登錄頁面。我確實發現了這個帖子,也許你可能需要遵循類似的方法,基本上它涉及發送一個無效的登錄嘗試:Logging a user out when using HTTP Basic authentication

相關問題