現在ログインしているユーザーにログアウトすることなく、プログラム的に別のユーザーになりすましてください

drupal.stackexchange https://drupal.stackexchange.com/questions/315

  •  16-10-2019
  •  | 
  •  

質問

モジュールはグローバルの値をどのように変更する必要がありますか $user, 、独自のコードを実行し、の元の値を復元します $user エラーが発生した場合、現在のユーザーがログアウトしますか?

役に立ちましたか?

解決

drupal_cron_run() 関数は、Cronが実行されるたびに現在のユーザーを匿名に変更するため、まさにこれの完璧な例を提供し、完了した後に戻ります。

// Prevent session information from being saved while doing funky stuff.
$original_session_state = drupal_save_session();
drupal_save_session(FALSE);

// Force the current user to anonymous to ensure consistent permissions on
// funky stuff runs.
$original_user = $GLOBALS['user'];
$GLOBALS['user'] = drupal_anonymous_user(); // Or use user_load() for a non-anonymous user.

// Do funky stuff here...

// Restore the user.
$GLOBALS['user'] = $original_user;
drupal_save_session($original_session_state);
ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top