проверить uniqid на сессию - PullRequest
1 голос
/ 18 мая 2011

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

Теперь, чтобы избежать такого случая, я создаю случайный сеанс после первого потока, используя функцию uniqid ('prefix_'). Но если кто-то обновляет страницу, запрос должен снова пойти на сервер для аутентификации.

Для этого я проверяю значение cookie сессии. Если cookie имеет мой заданный префикс (указанный в uniqid), то он не является действительным сеансом и перенаправляет на сервер. Я хочу знать, насколько надежен этот вариант? Есть ли у меня другое решение?

Обновление: Вот как выглядит моя функция validSession:

public function validSession() {<br> if ($sessionCookie !== null && substr($sessionCookie,0,7) !== 'prefix_')<br> return true;<br> return false;<br> }

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

1 Ответ

0 голосов
/ 18 мая 2011

Похоже, проблема управления потоком.Просто не перенаправляйте обратно, если вход не выполнен.

@session_start();
$user = Auth::login($username, $pwd);
if (!empty($user))
{
  $_SESSION['auth_user'] = $user;
  session_write_close();
  header('Location: '.$_REQUEST['next']);
}
else
{
  header('Location: '.Auth::STANDARD_LOGIN_URL);
}

В этом примере используется класс аутентификации psuedo, со статическим методом входа в систему (возвращает пользователя или false / null при ошибке) и константу, которая определяеткуда идти, чтобы войти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...