Как я могу зарегистрировать WebSecurityConfigs во время выполнения? - PullRequest
2 голосов
/ 15 апреля 2019

Я создаю веб-приложение для учебы. Приложение будет управляться одним администратором, который может регистрировать организации, чтобы его могли использовать его сотрудники.

У меня уже есть работающая конфигурация WebSecurityConfiguration, которая перенаправляет каждого неаутентифицированного пользователя на страницу формы входа в систему "/ login". Теперь мне нужно дать каждой организации собственную ссылку для входа в систему, например, "{organization} / login", поскольку мой профессор запросил ее. И для этого я пока не нашел решения.

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

Я попытался прочитать о StackOverflow и нашел этот вопрос . Он не отвечает на вопрос, который у меня возник, так как, кажется, он был вызван только аутентификацией.

Я думал о решении проблемы путем добавления нескольких WebSecurityConfiguration (с помощью @Order), что в конечном итоге ничего не решает, так как я не знаю, сколько организаций (и каких) будет добавлено.

Я попытался использовать собственный контроллер для обработки «/ login» и позволить Spring внедрить HttpServletRequest в соответствующий метод (аннотированный @GetMapping («/ login»)) в надежде найти исходный HTTP-запрос, который был перенаправлен, сохранен где-то в Кажется, я либо пропустил это, либо его там нет.

Так что моя следующая надежда - добавить фабрику в мое приложение, которая просто добавляет еще один WebSecurityConfig во время выполнения для каждой недавно зарегистрированной организации. Я не нашел никаких средств, чтобы понять это, хотя. Так есть ли способ зарегистрировать новые WebSecurityConfigurations во время выполнения я пропустил? Или есть место, где я могу получить информацию о HTTP-запросе после его перенаправления на страницу входа? Я открыт для любых решений или намека на мою проблему.

1 Ответ

0 голосов
/ 16 апреля 2019

Похоже, я не отладил атрибуты сеанса должным образом. Spring Security сохраняет запрос в сеансе (доступно по ключу «SPRING_SECURITY_SAVED_REQUEST»). Похоже, я только получил доступ к "/ логин" напрямую и, следовательно, не был перенаправлен. Этот атрибут, очевидно, не установлен, если пользователю не нужно было перенаправлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...