Автоматический вход в систему существующего пользователя с Parse PHP SDK - PullRequest
0 голосов
/ 14 сентября 2018

Мы находимся в процессе создания php веб-версии нашего мобильного приложения, которое использует синтаксический анализ sdk's

Идея состоит в том, чтобы уменьшить трения, связанные с тем, что пользователь загружает наше мобильное приложение, отправляя им ссылку через текст или по электронной почте, которая при нажатии автоматически создает пользователя в фоновом режиме, когда он попадает на страницу, и сохраняет какие-то данные о этого пользователя, поэтому, когда они возвращаются в наше веб-приложение по ссылке, им не нужно повторно входить в систему.

Я хорошо разбираюсь в PHP, но никогда не занимался системой входа в систему и не имел дело с лучшими практиками в области безопасности, так что это вопрос о том, что делать и чего также избегать.

Создать пользователя просто, и при этом всегда нужно иметь session_start (); В верхней части каждого php-файла есть одна важная часть, но я не уверен на 100%, что лучший способ справиться с этим - это когда пользователь возвращается к веб-версии нашего приложения либо по оригинальной ссылке, либо вводя url, чтобы мы распознали пользователя и autolog, в котором этот пользователь вернулся, чтобы их действия могли быть записаны в базу данных.

Просмотр разбора php sdk для пользователя разбора https://github.com/parse-community/parse-php-sdk/blob/master/tests/Parse/ParseUserTest.php

Я вижу некоторые функциональные возможности, связанные с токеном сеанса и возможностью стать пользователем.

public function testBecome()
{
    $user = new ParseUser();
    $user->setUsername('asdf');
    $user->setPassword('zxcv');
    $user->signUp();
    $this->assertEquals(ParseUser::getCurrentUser(), $user);
    $sessionToken = $user->getSessionToken();
    $newUser = ParseUser::become($sessionToken);
    $this->assertEquals(ParseUser::getCurrentUser(), $newUser);
    $this->assertEquals('asdf', $newUser->get('username'));
    $this->setExpectedException('Parse\ParseException', 'Invalid session token');
    ParseUser::become('garbage_token');
}

Однако для этого требуется, чтобы вы указали действительный логин и пароль в виде открытого текста, чтобы войти в систему или стать этим пользователем с помощью токена сеанса. Сессия php длится около 30 минут или около того, если вы не измените этот параметр на более высокое значение, но это не рекомендуется, так что может быть сохранено в файле cookie, чтобы, когда он возвращается, они «запоминались» и входили в систему.

структура псевдокода ... есть ли какие-либо указатели на обнаружение существующего пользователя, который уже имеет учетную запись?

<?php
  session_start();
  // do we know this user? is the session token valid still?

  detect existing user code .. ?

  // log the user back in if we have no valid session token
  ParseUser::logIn('fooo', 'password');
  $current = ParseUser::getCurrentUser();
  echo "Welcome " . $username; // blah blah blah

  // if not create the user and store some sort of identifier in the database or cookie  
  // user create
  $user = new ParseUser();
  $user->setUsername('asdf');
  $user->setPassword('zxcv');
  $user->signUp();
  $this->assertEquals(ParseUser::getCurrentUser(), $user);
  $sessionToken = $user->getSessionToken();

  // if valid do other stuff etc..

?>
...