2013-03-19 52 views
0

我正在使用在以前版本的IIS中工作的模塊。嘗試Windows授權,但後退自定義登錄

http://www.velocityreviews.com/forums/t94333-re-how-do-i-create-a-httpmodule-to-authenticate-in-aspnet.html

它不再有效,因爲集成框架,我不能改回經典。

需要客戶端嘗試訪問該網站,如果他們是可以訪問該網站的Windows或域用戶,根據我們的數據庫,他們將自動登錄。如果不是,他們將被帶到登錄頁面。

整個網站運行的是default.aspx頁面,該頁面是每次調用動態生成的,因此我們不能擁有單獨的登錄頁面。

有沒有人知道一個模塊或方法,使這項工作在IIS 7/7.5?

編輯: 下面是模塊生成的JavaScript。看起來好像我總是跳到我返回的位置 location.replace(「/ default.aspx?abortScreening = true」);

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
<head> 
<title>Loading ...</title> 
</head> 
<body> 
<script type="text/javascript" language="javascript"> 
    function canAuthenticate() 
    { 
     try 
     { 
     alert("Try canAuthenticate"); 
      var dom = new ActiveXObject("Msxml2.DOMDocument.4.0"); 
      dom.async = false; 
      dom.load("CredentialsScreeningRequiresAuthentication.aspx?ReturnUrl="); 
     } 
     catch(e) 
     { 
      return false; 
     } 
    return true; 
    } 
    if (document.cookie.length != 0) 
    { 
     if (canAuthenticate()) 
     { 
      location.reload(); 
     } 
     else 
     { 
      location.replace("/default.aspx"); 
     } 
    } 
    else 
    { 
     location.replace("/default.aspx?abortScreening=true"); 
    } 
</script> 
<noscript> 
"Your browser does not support JavaScript or has scripting disabled, which prevents credentials screening from working." 
Please click <a href="/default.aspx?abortScreening=true">here</a> to go to the requested page without authentication. 
</noscript> 
</body></html> 

回答

0

如果不使用單獨的登錄頁面,則無法完成此操作。如果可能的話,那裏就會有解決方案,而且你可能已經發現通過Google搜索找不到任何解決方案。

您有三種選擇。返回到經典模式,使用單獨的登錄頁面,或者沒有此功能。

+1

所以我最終做的是使用Ajax錯誤處理程序。我發現401錯誤設置了一個標誌,告訴服務器Windows Auth失敗,然後將它們重定向回頁面以允許用戶登錄。 – Levi 2013-03-26 15:08:48

+0

@Levi - Creative解決方案。我喜歡。 – 2013-03-26 15:12:34