SessionManager::start

public SessionManager::start()

Starts the session.

Return value

bool True if started.

Throws

\RuntimeException If something goes wrong starting the session.

Overrides NativeSessionStorage::start

File

core/lib/Drupal/Core/Session/SessionManager.php, line 105

Class

SessionManager
Manages user sessions.

Namespace

Drupal\Core\Session

Code

public function start() {
  if (($this->started || $this->startedLazy) && !$this->closed) {
    return $this->started;
  }

  $request = $this->requestStack->getCurrentRequest();
  $this->setOptions($this->sessionConfiguration->getOptions($request));

  if ($this->sessionConfiguration->hasSession($request)) {
    // If a session cookie exists, initialize the session. Otherwise the
    // session is only started on demand in save(), making
    // anonymous users not use a session cookie unless something is stored in
    // $_SESSION. This allows HTTP proxies to cache anonymous pageviews.
    $result = $this->startNow();
  }

  if (empty($result)) {
    // Randomly generate a session identifier for this request. This is
    // necessary because \Drupal\user\SharedTempStoreFactory::get() wants to
    // know the future session ID of a lazily started session in advance.
    //
    // @todo: With current versions of PHP there is little reason to generate
    //   the session id from within application code. Consider using the
    //   default php session id instead of generating a custom one:
    //   https://www.drupal.org/node/2238561
    $this->setId(Crypt::randomBytesBase64());

    // Initialize the session global and attach the Symfony session bags.
    $_SESSION = array();
    $this->loadSession();

    // NativeSessionStorage::loadSession() sets started to TRUE, reset it to
    // FALSE here.
    $this->started = FALSE;
    $this->startedLazy = TRUE;

    $result = FALSE;
  }

  return $result;
}
doc_Drupal
2016-10-29 09:42:05
Comments
Leave a Comment

Please login to continue.