В настоящее время я использую объект HttpSession по умолчанию как на контроллерах, так и на страницах gsp:
В контроллерах:
...
session.mykey = anObject; // adding an object to session
...
if (session.otherkey) { // performing some checking
В GSP:
...
<g:if test="${session.mykey}">
...
Я бы хотел иметь функцию "запомнить меня". В Shiro он уже встроен. Однако, насколько я понял, для этого мне нужно использовать собственный режим сеанса shiro (в Config.groovy: security.shiro.session.mode = "native"). По умолчанию он сохраняет состояние сеанса, поэтому объекты остаются в сеансе до истечения срока действия файла cookie или выхода пользователя из системы.
Правильно ли мое понимание?
Тогда мне придется изменить мои контроллеры на это:
def shiroSession = SecurityUtils.subject.session
shiroSession.setAttribute("mykey",anObject)
....
if (shiroSession.getAttribute("otherkey") ){
И мои взгляды на это:
<g:if test="${SecurityUtils.subject.session.getAttribute('mykey')}">
Итак, мои вопросы:
- Это правильно?
- Разве я не могу просто использовать предыдущий способ для доступа к сеансу?
- Нужно ли отключать сеанс http по умолчанию в некоторых конфигурациях?