2013-11-21 4 views
1

Я использовал сеанс apache для авторизации и авторизации.Как очистить сеанс apache shiro?

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

Очевидным для этого является всякий раз, когда я нахожу выход из системы, он появляется на главном экране, и если я использую кнопку «Назад», я могу вернуться на последний экран.

Моя функция SignOut выглядит следующим образом

// Log the user out of the application. 
SecurityUtils.subject?.logout() 
webRequest.getCurrentRequest().session = null 
session.invalidate()  

// For now, redirect back to the home page. 
redirect(uri: "/") 

Любая помощь по этому вопросу очень ценна борется за это от последних 2-х дней

+0

Какую версию плагина Grails shiro вы используете? – j4y

+0

am using shiro 1.2.0 –

ответ

1

Это работает для меня с версией версии 1.1.4 Shiro плагин.

def logOut() { 
    SecurityUtils.subject?.logout() 

    redirect(uri: "/") 
} 
+1

Я также использую тот же самый код, который он выходит из системы, но сеанс siro все еще активен. Если я использую кнопку возврата в браузере, я могу вернуться на предыдущую страницу. Если я оставлю это, скажем, около 1 часа сеанса shior будет тайм-аут, и все работает нормально –

1

Это связано с кешем браузера. Вы можете настроить сброс кеша браузера в файле ShiroSecurityFilters.

class ShiroSecurityFilters { 
def filters = { 
    requestHeadersFilter(controller: '*', action: '*') { 
      after = { 
      response.setHeader("Pragma", "no-cache") 
      response.setDateHeader("Expires", 0) 
      response.setHeader("Cache-Control", "no-cache") 
      response.addHeader("Cache-Control", "no-store") 
     } 
    } 
Смежные вопросы