모든 활성 사용자를 로그 아웃하는 방법


15

내 사이트를 "유지 관리 모드"로 설정하는 대신 완전한 "읽기 전용 모드"로 설정하고 싶습니다. 이를위한 모듈 이 있지만 "노드 추가 및 편집"만 방지합니다. 기본적으로 (니스) 캐시에서 사이트를 제공하기 위해 로그인 및 등록을 포함한 모든 사용자 활동을 방지하고 싶습니다. 부수적으로 사이트에 요청이 넘치면이 유형의 "읽기 전용 모드"를 사용합니다.

내 질문 : 모든 활성 사용자를 어떻게 로그 아웃 할 수 있습니까? 로그인 및 등록 후 후크로 리디렉션 할 수 있습니다.

답변:


13

내가 아는 한 세션 테이블을 비울 수 있으며 모든 사용자가 로그 아웃됩니다. 설치 한 모듈에 따라 문제가있을 수 있습니다. 예를 들어, 구현하는 모듈은 hook_user_logout()조치를 발생시키지 않으므로 문제가 될 수 있습니다. 설치된 모듈 중 어느 것도이 후크를 구현하고 있지 않은지 확인하십시오.


4
@ F1234k가 말했듯이 세션 테이블을 삭제하면 hook_user_logout ()이 트리거되지 않습니다. 그러나 당신은 그것을 당신 자신을 유발시킬 수 있습니다. 세션 테이블에서 모든 uid를 선택하고 각각에 대해`module_invoke_all ( 'user_logout', $ user);`를 실행하십시오. 그러나 1 시간 이상 세션을 연 세션을 필터링 할 수 있습니다 (Drupal의 세션은 무제한으로 활성화 된 상태로 유지 될 수 있음).
Alexandru Savin

감사. 로그 아웃 후크를 실행해야합니다. 그렇지 않으면 "영구 로그인"모듈로 로그인 한 사용자를위한 WSOD가 제공됩니다.
uwe

13

drush를 사용하여 세션 테이블을 비울 수 있습니다

drush sqlq "TRUNCATE sessions"

또는 테이블 이름에 접두사를 설정 한 경우 :

drush sqlq --db-prefix "TRUNCATE {sessions}"

0

업데이트 후크를 통해 모든 사용자를 강제로 로그 아웃 할 수 있습니다.

/**
 * Force to logout all the users.
 */
function mymodule_update_7001() {
  db_truncate('sessions')->execute();
}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.