#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 … запрашивать сообщения на сервер с уникальным токеном запрашиваемого лица.
работа сервера
- проверьте, действителен ли уникальный идентификатор.
- проверьте, какое сообщение для этого уникального идентификатора .
например
| 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
и, возможно, получит его…