2016-03-02 6 views
-1

У меня проблема в моем проекте. Когда администратор вошел в систему, пользователь не может войти в тот же браузер, почему это происходит? Но когда я уничтожаю файлы cookie, а затем пытается войти в систему как пользователь, он правильно входит в систему.Пользователь не может войти, когда администратор зарегистрирован

Как я могу это решить?

+0

Вы не можете этого сделать, используйте отдельный браузер, иначе вам придется использовать несколько методов сеанса – Qazi

+0

Как я могу это сделать? –

+0

Можете ли вы вставить то, что вы сделали, ваш контроллер, промежуточное ПО, представления, поскольку никто не сможет вам помочь, пока вы не вставьте то, что вы сделали. – osleonard

ответ

0

Любой крупный браузер хранит только один сеансовый файл cookie для сайта, но разработчик сайта выбирает, что находится в этом файле cookie. Кажется, что ваш сайт хранит информацию пользователя в cookie сеанса, который затем перезаписывается, когда другая вкладка хранит различную информацию в том же файле cookie.

Вы не указали подробно о том, как работает ваш конкретный сайт, но вот несколько общих способов решения этой проблемы.

1) Используйте различные браузеры для разных пользователей. Различные браузеры не разделяют куки между ними. Если ваша цель - просто протестировать ваш сайт с несколькими пользователями, это так. Вы также можете использовать режим Incognito/Private для входа отдельного пользователя, так как этот режим также не поддерживает файлы cookie.

2) Не используйте файлы cookie сеанса для хранения информации пользователя. Это не стартер на большинстве веб-сайтов, но если это внутренний сайт или строго контролируемая среда, вы можете пройти идентификацию пользователя через URL-адрес, данные POST или какой-либо другой скрытый идентификатор в запросе.

3) Хранить данные в файле cookie для всех зарегистрированных пользователей. В зависимости от веб-структуры может быть возможно создать карту пользователя -> cookieData и найти правильный, основанный на том, какой пользователь выполняет запрос. Это продвинутая техника, и я действительно не знаю, раскрывает ли Laravel этот уровень контроля.

0

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

1) определить флаг на уровне пользователя (например, SuperUser). Это может быть 0 (false) или 1 (true).

2) позволяет «олицетворение» - если администратор установлен флагу суперпользователя, он/она может изменить свои роли/права и увидеть сайт, как если бы он/она является обычным пользователем с этими конкретными правами, но пользователь раздел управления все еще доступен, чтобы разрешить изменение прав.

3) Небольшие изменения необходимы в разделе управления пользователями, чтобы SuperUser реализация безопасности (то есть раздел, показывающим, если пользователь не имеет администратор роли, но она помечена как суперпользователь)

Итак, вы проверяете, как один пользователь, не требуется многократные сеансовые файлы cookie или другие трюки. Вы можете открыть одну вкладку с вашим профилем пользователя и другими (-ами), чтобы выполнить фактическое тестирование.

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

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