我有一個外部非Drupal網站members.example.com,如果觀衆成員在該網站上登錄,它會設置一個cookie。它設置了一個對Drupal站點可見的cookie:Drupal 7 Cache Busting
$ _COOKIE ['name'] ='John Smith';
我想要認識到,members.example.com登錄用戶可以訪問Drupal站點www.example.com上的高級內容。我也想在網站的眉毛部分按名稱登錄會員。
問題是,在登錄非Drupal站點members.example.com並返回到Drupal站點www.example.com後,Drupal仍然緩存了很多內容,並且無法識別用戶現在已經設置了$ _COOKIE ['name']。
我:
坐落在settings.php配置Cookie域爲 'example.com'
試圖胸圍匿名的Drupal用戶誰也有這樣的cookie緩存:
/**
* Implements hook_init()
*/
function caplogin_init() {
// Check for cookie if it's set to 'loggedout':
if (isset($_COOKIE['name'])) {
if (strpos($_COOKIE['name'],'loggedout') !== FALSE) {
// Log them out on the www site too:
setcookie('name', '', 1, '/', '.example.com');
global $user;
if ($user->uid > 0) {
user_logout();
}
$reason = 'Members server logout.';
_caplogin_no_cache($reason);
drupal_set_message(t('You have been logged out of the site. Thanks for visiting!'));
}
else {
$reason = 'Member logged in internal server.';
_caplogin_no_cache($reason);
}
}
}
和...
function _caplogin_no_cache($reason) {
if (!$reason) {
$reason = 'no-cache called by site functionality.';
}
drupal_add_http_header('X-DRCC-No-Cache-Reason', $reason);
drupal_add_http_header('Pragma', 'no-cache');
drupal_add_http_header('Last-Modified', gmdate('D, d M Y H:i:s') . ' GMT');
drupal_add_http_header('Cache-Control', 'no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0');
drupal_add_http_header('Expires', 'Sat, 02 Jan 1971 00:00:00 GMT');
}
我也安裝傑韋利模塊(用於TESTI ng)檢查ON複選框,以在每次頁面加載時重建主題緩存。沒有運氣。
如果添加一個僞造的查詢字符串,它會破壞緩存,例如, http://www.example.com/?sdjaSDH
但客戶端需要Drupal認識到用戶已登錄外部members.example.com站點的功能。
我還能試試嗎?