2013-11-21 3 views
1

인증 및 권한 부여를 위해 apache shiro 세션을 사용했습니다.아파치 시로 세션을 지우는 방법?

다른 사용자와 권한 및 역할로 로그인 할 수 있지만 실제로 문제가되는 것은 signOut 함수를 호출 할 때마다 시로 세션이 닦이지 않는 것처럼 보입니다.

로그 아웃을 클릭 할 때마다 기본 화면이 표시되고 브라우저의 뒤로 버튼을 사용하면 마지막 화면으로 돌아갈 수 있습니다.

내 signOut 기능이이 시로 플러그인의 버전 버전 1.1.4와 나를 위해 작동 지난 이일

+0

어떤 Grails shiro 플러그인 버전을 사용하고 있습니까? – j4y

+0

시로 사용 1.2.0 –

답변

1

에서 이것에 대한 고민이 정말 감사에서이

// 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: "/") 

어떤 도움을 것 같습니다.

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

    redirect(uri: "/") 
} 
+1

로그 아웃과 동일한 코드를 사용하지만 시로의 세션은 여전히 ​​활성화되어 있습니다. 브라우저의 뒤로 버튼을 사용하면 이전 페이지로 돌아갈 수 있습니다. 내가 약 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") 
     } 
    } 
관련 문제