Ограничить доступ по времени с помощью пружинной защиты в приложении Grails - PullRequest
0 голосов
/ 28 ноября 2011

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

Может кто-нибудь посоветовать лучший способ сделать это?

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

Как я понимаю, мне нужно реализовать фильтр Авторизация (не Аутентификация), который будет проверять ограничения по времени.

Я один правильный путь?Если да, то может ли кто-нибудь предоставить полезные ссылки для этой задачи?

1 Ответ

1 голос
/ 28 ноября 2011

Ага, я уже ответил на это в списке рассылки.

То, что я написал:

Возможное решение (двойное):

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

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

В граалях, какполучить ссылку на все текущие сеансы?

Теперь я вижу, что AccessDecisionVoter - лучшее решение, чем пользовательские детали, но ответ для тех, кто уже вошел в систему, остается тем же.

...