Попросите браузер хранить разные пароли для каждого пути в одном домене отдельно - PullRequest
0 голосов
/ 20 июня 2019

Я пишу браузерное приложение, которое имеет несколько форм входа в один домен, но по разным путям.

domain.tld/foo/login domain.tld/bar/login domain.tld/bar/boo/login

На данный момент все формыэлементы выглядят одинаково, без атрибутов и только с простым вводом пароля с одинаковым именем для всех путей и кнопкой отправки, к которой я прикрепил слушателя при отправке.Введенный пароль извлекается при вызове слушателя, и поведение отправки по умолчанию запрещено.Затем фактический вход в систему происходит через AJAX-запрос в фоновом режиме.

HTML:

<form method="dialog">
  <input name="password" type="password">
  <button type="submit">Login</button>
</form>

Javascript:

form.addEventListener('submit', e => {
  login(); // Do the ajax login request
  e.preventDefault();
  return false;
});

Все протестированные браузеры (FF, FFM, C,СМ, О, ОМ) позволяют сохранить пароль, что приятно.К сожалению, пароль сохраняется для каждого субдомена, а не для пути, поэтому пароли для предыдущих посещенных путей в этом же домене перезаписываются.

Каков наилучший способ указать браузерам сохранять пароли для каждого URL-адресапуть индивидуально?

1 Ответ

1 голос
/ 20 июня 2019

Это невозможно в большинстве браузеров. Например, 15 лет назад Mozilla решила, что они не будут поддерживать эту функцию .

Вы можете внедрить свой собственный путь, основанный на системе «Держите меня в системе» через куки.

Или вы используете HTTP-аутентификацию с разными областями. Как описано в этом посте .

location /gabinete-rivera {
    auth_basic "Hijos de Rivera";
    auth_basic_user_file /home/www/public/gabinete-rivera-app/.htpasswd;
    index  index.php index.html;
    try_files $uri $uri/ /index.php?$query_string;
}

location /gabinete-gases {
    auth_basic "Gases Fluorados";
    auth_basic_user_file /home/www/public/gabinete-gases-app/.htpasswd;
    index  index.php index.html;
    try_files $uri $uri/ /index.php?$query_string;
}
...