Перенаправление не работает в Safari и Firefox - PullRequest
0 голосов
/ 10 января 2019

Я использую express-ntlm для аутентификации моих пользователей в моем приложении. В Mac OS браузеры запрашивают имя пользователя и пароль, а когда пользователь вводит неправильный пароль, он показывает страницу с запрещенным сообщением. Я перезаписываю функцию forbidden в своей пользовательской библиотеке, чтобы я мог перенаправить пользователей на текущий URL, чтобы они могли снова ввести имя пользователя и пароль. По какой-то причине это работает в Chrome, но не в Firefox или Safari, просто обновляет страницу, но не запрашивает у пользователей имя пользователя и пароль. Похоже, что браузер хранит неудачные попытки входа в систему и не позволяет вам повторить попытку.

forbidden: function(req,res){
    res
      .status(401)
      .send(`<!DOCTYPE html><html><head><body>
      <h2>Login failed, Please try again.</h2></body></head>
      <script>
      window.setTimeout(function() {
        window.location.href = '${req.url}';
      }, 1000);
      </script></html>`)
  }

1 Ответ

0 голосов
/ 26 мая 2019

NTLM имеет смысл, только если вы используете его для единого входа (без ручного ввода учетных данных).

В вашем случае я бы предложил вам создать собственную форму имени пользователя / пароля, а затем использовать какой-либо модуль Active Directory / LDAP для аутентификации на контроллере домена. Если это удастся, пользователь войдет в систему, в противном случае вы увидите ошибку, и пользователь может повторить попытку.

Вы также можете объединить их и использовать express-ntlm, если имеется браузер, поддерживающий NTLM (например, IE), и в противном случае отображается форма входа в систему. На мой взгляд, это будет самым большим преимуществом и лучшим UX для ваших пользователей.

...