Правила безопасности Seam Drool - дополнительные факты в рабочей памяти? - PullRequest
2 голосов
/ 06 декабря 2010

Я создал класс с именем ApplicationLoginContext, который содержит информацию о пользователе после его аутентификации (имя пользователя, время входа в систему, удаленный IP-адрес и т. Д.). Я использую правила безопасности JBoss Seam (основанные на Drools).для проверки разрешений и разрешений в разное время по всему моему заявлению.Есть ли способ навсегда добавить этот класс контекста входа в систему в рабочую память моих правил безопасности?Например, у меня есть слушатель событий входа в систему.Внутри этого слушателя я создаю объект контекста входа в систему и добавляю его в рабочую память моих правил безопасности.Оттуда, внутри моего файла правил безопасности, я мог бы делать что-то вроде:

rule MyRule
...
when
  c: PermissionCheck()
  loginContext:  ApplicationLoginContext()
  // do stuff with loginContext here
then
  ...

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

Мысли?

1 Ответ

0 голосов
/ 18 марта 2011

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

rule "insert logic"
salience 100
when 
eval(true)

then
insert fact object
...