выход с сервера browserID - PullRequest
       26

выход с сервера browserID

0 голосов
/ 20 сентября 2011

, поэтому я нашел browserid.org , а затем [browserid.org/developers] и решил, что хотел бы попробовать этот новый метод аутентификации, который является browserID.покопавшись в единственном полуофициальном примере, который я смог найти ( browserid_favbeer_example ) и перелистывая туда-сюда страницу 3 простых шагов, я все еще озадачен.Я немного обыскал и нашел одну, реализацию javascript можно легко использовать (прямо сейчас) и две, от очень приятного человека, пример ниже.первое, что я заметил, это пропало был выход из системы.если бы кто-нибудь мог быть так любезен, чтобы помочь мне завершить выход, это было бы очень ценно.

<?php
/*
 * Simple implementation of Mozilla BrowserID (see https://browserid.org/)
 * Author : Guillaume <guillaume@atto.be>
 */
/*
 * Usage :
 *
$browserid = new BrowserID('mywebserver.com', $_POST['assertion']);
if($browserid->verify_assertion())
{
      echo('Welcome, your email is '.$browserid->get_email());
}
 */
class BrowserID
{
  private $audience;
  private $assertion;
  private $email;
  private $validity;
  private $issuer;
  private function post_request($url, $data)
  {
    $params = array('http' => array('method' => 'POST', 'content' => $data));
      return stream_get_contents($fp);
    }
    else
    {
      return FALSE;
        }
      }
      public function BrowserID($audience, $assertion)
      {
        $this->audience = $audience;
        $this->assertion = $assertion;
      }
      /*
       * Send the assertion to the browserid.org server (this must be over HTTPS)
       * The response is read to determine is the assertion is authentic
       */
      public function verify_assertion()
      {
                if(isset($result['status']) && $result['status'] == 'okay')
        {
          $this->email = $result['email'];
          $this->validity = $result['valid-until'];
          $this->issuer = $result['issuer'];
          return true;
        }
        else
        {
          return false;
        }
      }
      public function get_email()
      {
    return $this->email;
  }
  public function get_validity()
    return $this->email;
  }
  public function get_validity()
 * Usage :
 *
$browserid = new BrowserID('mywebserver.com', $_POST['assertion']);
if($browserid->verify_assertion())
{
  echo('Welcome, your email is '.$browserid->get_email());
}
 */
class BrowserID
{
  private $audience;
  private $assertion;
  private $email;
  private $validity;
  private $issuer;
  private function post_request($url, $data)
  {
    $params = array('http' => array('method' => 'POST', 'content' => $data));
      return stream_get_contents($fp);
    }
    else
    {
      return FALSE;
    }
  }
  public function BrowserID($audience, $assertion)
  {
    $this->audience = $audience;
    $this->assertion = $assertion;
  }
  /*
   * Send the assertion to the browserid.org server (this must be over HTTPS)
   * The response is read to determine is the assertion is authentic
   */
  public function verify_assertion()
  {
    if(isset($result['status']) && $result['status'] == 'okay')
    {
      $this->email = $result['email'];
      $this->validity = $result['valid-until'];
      $this->issuer = $result['issuer'];
      return true;
    }
    else
    {
      return false;
    }
  }
  public function get_email()
  {
    return $this->email;
  }
  public function get_validity()
  {
    return $this->validity;
  }
  public function get_issuer()
  {
    return $this->issuer;
  }
}// end class BrowserID
$browserid = new BrowserID($_SERVER['HTTP_HOST'], $_POST['assertion']);
if($browserid->verify_assertion())
{
  echo('Welcome '.$browserid->get_email());
}
else
{
  echo('Identification failure');
}
?>

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

Надеюсь, еще не поздно ответить на ваш вопрос. Это было замечено в списке рассылки BrowserID, но, к сожалению, никто не вернулся сюда, чтобы ответить вам.

После того, как вы аутентифицируетесь с помощью BrowserID, вы устанавливаете куки аутентификации и на основе куки вы можете определить, является ли пользователь действительным. Затем, чтобы выйти, вы предлагаете пользователю ссылку, по которой вы удалите этот файл cookie.

0 голосов
/ 11 октября 2012

Правильный ответ Джо. Persona не заменяет существующее управление сеансами, поэтому вам все равно придется создавать и удалять файлы cookie.

Однако новый API Persona / BrowserID теперь имеет navigator.id.logout() функция, которую вы должны вызвать, а также обратный вызов «onlogout» внутри navigator.id.watch (), где вы указываете, что происходит при выходе пользователя из системы (т. е. файлы cookie удаляются):

https://developer.mozilla.org/en-US/docs/DOM/navigator.id#ObserverMethods

...