Убедитесь, что человек перенаправляется на страницу входа в систему

#javascript

Вопрос:

У меня возникли проблемы с поиском решения для этого. Если мне нужно, чтобы кто-то перенаправил на страницу входа в систему, если он не вошел в систему, как мне убедиться, что он действительно перенаправляет? Что делать, если они не перенаправляют код, и у них все еще есть доступ к странице. У кого-нибудь есть хорошее решение?

Комментарии:

1. Можете ли вы сделать это на стороне сервера? Тогда они не смогут запретить запуск/перенаправление JS.

Ответ №1:

Первый раз в жизни не доверяю интерфейсу.

Единственная цель интерфейса — обеспечить плавный пользовательский интерфейс .

Как решить вашу проблему

предположим , вы отправляете сообщение для 3 человек (Джон, Джозеф , рия).

Что вы делаете

у вас есть login.html amp; message.html

если Джон введет правильное имя пользователя и пароль, отправьте его на message.html и сохраните какой-нибудь уникальный идентификатор этого человека в хранилище браузера(файл cookie,сеанс,локальный).

если у джона нет уникального идентификатора, то в js проверьте его и перенаправьте на login.html

Проблема с этим

если кто-нибудь остановит работу js, то !!!!

один из способов решения проблемы-добавить noscript html-тег. но какой-нибудь браузер может обойти и это .

Каков аукционный способ сделать это

опустошить message.html по умолчанию .

в js используйте fetch , axios или jquery … запрашивать сообщения на сервер с уникальным токеном запрашиваемого лица.

работа сервера

  1. проверьте, действителен ли уникальный идентификатор.
  2. проверьте, какое сообщение для этого уникального идентификатора .

например

 | name     | token          | message |
| -------- | -------------- | ------- |
| john     | 1              |b        |
| joseph   | 2              |a        |
| riya     | 3              |b        |
 

для токена 2 сообщение-это a
для токена 1, а для токена 3 сообщение-b

для токена 4 нет идентификатора .

в интерфейсе, если идентификатор неверен, отправьте на страницу входа

Ответ №2:

Лучшее решение-использовать для этого сервер. Если ваш сервер отправляет location заголовок. Это перенаправит пользователя, и он ничего не сможет с этим поделать. Пример на PHP: header("location:index.php");

Если это невозможно, вы можете сделать это на клиенте (javascript), но вам не гарантируется, что они не отключат javascript или просто перехватят и остановят работу этой части кода.


Как бы вы это ни делали, вы должны быть уверены, что даже если пользователь попытается получить доступ к любой из ваших конечных точек администратора, он должен доказать, что вошел в систему. В противном случае кто-то просто попытается example.com/admin/privateData.json и, возможно, получит его…