2013-03-19 2 views
0

Я работаю с модулем, который работал в предыдущих версиях IIS.Попытка авторизации Windows, но возврат на пользовательский вход

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

Он больше не работает из-за рамках интегрированной, и я не могу изменить его обратно Classic.

Необходимо, чтобы клиент попытался получить доступ к веб-сайту, и если они являются пользователями 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

+0

@Levi - Креативное решение. Мне это нравится. –

Смежные вопросы