Аутентифицироваться с помощью sfguarduser без http логина - PullRequest
1 голос
/ 31 декабря 2010

Я пытаюсь разработать веб-сервис в приложении на основе Symfony, мы используем плагин sfguarduser, и я хочу, чтобы аутентификация учетных данных пользователя выполнялась в одном запросе, чтобы проверить права пользователя и затем выполнить действие веб-сервиса, есть ли способ выполнить действие входа в систему без html формы входа в систему?

1 Ответ

5 голосов
/ 31 декабря 2010

В вашем действии сделайте следующее:

$this->getUser()->signin($sfGuardUserObject);

Который вы должны вызвать с помощью объекта sfGuardUser. Вы можете поместить этот код в метод preExecute () модуля, чтобы проверять каждый запрос.

Я делал нечто подобное, когда выполнял действие «активировать учетную запись». После создания учетной записи отправляется письмо с токеном, содержащее ссылку на сайт. Маркер отправляется в URL-адресе и сопоставляется на маршруте к действию. Затем действие проверяет, есть ли у пользователя этот токен, и затем регистрирует пользователя. Это то, что я сделал:

public function executeActivate(sfWebRequest $request)
{
  // if token is not present, forward to 404
  $this->forward404Unless($request->getParameter('token'), 'page', 'index');

  $this->profile = sfGuardUserProfilePeer::activateProfileByToken($request->getParameter('token'));

  // if someone was activated, return the mobile activation form and success page
  if (!$this->profile)
  {
    $this->redirect404();
  }

  // sign the user in
  $this->getUser()->signin($this->profile->getsfGuardUser());

  // set the $user variable for the template
  $this->user = $this->profile->getsfGuardUser();

}

Надеюсь, это поможет.

...