Next Previous Contents

4. Переменные и их значения.

В этом разделе описываются распознаваемые паспортом переменные, их способы передачи, допустимые значения и реакция паспорта на различные значения этих переменных.

О том как полученные данные обрабатываеются подсистемой ввода/вывода паспорта и разделяются на переменные и их значения можно посмотреть в разделе Входные данные.

4.1 mode - режим работы паспорта

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

Допустимыми значениями переменной mode являются названия режимов работы паспорта. Эти названия перечислены в разделе Режимы функционирования.

Если значение переменной не совпадает ни с одним из допустимых названий режимов работы, или значение не установлено, то значение будет принято равным auth. Эта проверка происходит в самом начале обработки значений переменных сразу после их разбора. ВНИМАНИЕ: не полагайтесь на описанное поведение - в дальнейшем режим по умолчанию может измениться. Всегда в явном виде указывайте значение режима работы.

4.2 from - вызвавший проект

Эта переменная служит для определения вызвавшего паспорт проекта. В соответствии со значением этой переменной выбираются части учётной записи, которые нужно получить или модифицировать. Например, по значению переменной from выбирается номер службы в таблице subscription.

Значение этой переменной не влияет на выбор служебного имени по которому будет проводится авторизация - авторизация всегда производится по единому служебному имени - логину Яндекса.

Допустимыми значениями данной переменной являются имена проектов, реакция на вызов из которых паспорта определена. На данный момент это:

Если значение переменной from не совпало не с одним из допустимых, или значение не установлено, то значение принмается равным passport.

4.3 retpath - адрес возврата

Эта переменная служит для установки адреса (url) на который должен быть переадресован пользователь после того, как паспорт закончит всю определённую режимом работу. Это означает, что если какой-либо проект вызвал паспорт для выполнения каких-либо действий, то он может выставить эту переменную, и после завершения всех необходимых действий, которые потребовались для выполнения задания, паспорт переадресует пользователя в соответствии со значением переменной retpath.

Например, если проект вызвал паспорт для авторизации пользоваетеля с ошибочной парой логин-пароль, то паспорт выдаст соответствующее сообщение и предложит пользователю ввести логин и парол ещё раз или перейти в режим 'вспомнить пароль'. Если пользователь выберет режим вспомимнания пароля, то паспорт проверит введённый почтовый адрес и, если адрес правильный, вышлет письмо с регистрационными данными. После чего предложит пользователю ввести только что полученные по почте логин и пароль. Ещё раз проверит, может ли пользователь авторизоваться с такой парой логин-пароль. Если да, то паспорт выставит новую сессию авторизованной работы и переадресует пользователя по адресу, изначально устновленному проектом при первом вызове паспорта для авторизации, так как сквозь все этапы паспорт проводит значение переменной retpath.

Для корректной передачи по HTTP и разбора значений адрес, устанавлеваемый в качестве значения переменной retpath должен быть закодирован (url encoded).Если значение переменной retpath передаётся внутри тела запроса, posted переменная, то браузер автоматически выполнит однократное кодирование. Если переменная передаётся в строке запроса, то о кодировании должен позаботится сервис, генерирующий строку запроса.

Когда могут возникнуть проблемы с кодированием? Возможны следующие ситуации:

  1. Если значением переменной является адрес уже содержащий закодированную строку, например адрес, содержащий поисковый запрос. В такой ситуации может создаться впечатление, что строка уже закодирована, хотя она содержит в явном виде такие символы, как & или =. Такой адрес нужно закодировать перед помещением в строку запроса ещё раз. При помещении в форму кодирование не обязательно.
  2. Если адрес содержит нежелательные по какм-либо соображениям элементы, могущие осложнить размещение строки в HTML форме, например в качетсве значения hidden поля формы, то можно закодировать строку перед помещением в тело формы. При этом в той же форме необходимо добавить переменную, скорее всего в качестве скрытого поля, encpath и установить её значение равным 'yes'. Этим Вы дадите понять паспорту, что на момент попадания данных к паспорту значение переменной retpath уже дважды закодировано. Паспорт проследит за тем, что перед переадресацией пользователя значение адреса было раскодировано необходимое число раз.

Допустимое значение переменной retpath - это любой допустимый адрес с учётом сделанных выше замечаний.

ВНИМАНИЕ: ни в коем случае не устанавливайте cookie с именем retpath - проследить за поведением переадресации в таком случе практически невозможно!

Обратите также внимание на то, что не во всех режимах паспорт реагирует на переменную retpath. Подробнее смотрите в разделе Режими функционирования.

4.4 ecnpath - флаг закодированного значения переменной retpath

Значение этой переменной равное 'yes' означает, что при попадании к паспорту значение переменной retpath будет дважды закодированным (url encoded). Все остальные значения игнорируются.

4.5 login

Итерпритация значения этой переменной зависит от режима функционирования, установленного переменной mode:

Допустимые значения - строка длиной не более 20 символов, состоящая из символов латинского алфавита, цифр и знака дефиса. Причём, не должно начинаться на цифру или заканчиваться дефисом.

4.6 passwd

Значение этой переменной воспринимается как пароль при авторизации и как новое значение пароля при регистрации или изменении регистрационных данных.

В качестве значения допустимы строки длиной не менее 4 символов, состоящие из букв латинского алфавита и цифр. В случае, когда переменная passwd содержит новое значение пароля, это значение должно совпадать со значением переменной passwd2.

4.7 переменные регистрации

Ряд переменных используется только в режимах регистрации или изменения регистрационных данных. Некоторые переменные в режиме регистрации должны быть обязательно установлены. В противном случае паспорт выдаст соответствующее диагностическое сообщение и предложит пользователю ввести недостающие данные.

4.8 переменные на выходе

На выходе из режимов регистрации или авторизации паспорт устанавливает следующие переменные:

После выхода из режима logout значение переменной Session_id устанавливается равным 'deleted', а время уничитожения (expiration time) устанавливается на текущее.


Next Previous Contents