Про OpenID-плагин

Продолжаю разбираться с OpenID-плагином Александра Никулина. Сегодня напишу свои измышления по поводу реализованных в этом плагине методов авторизации.

Итак, в «обычном» WordPress без плагинов можно «авторизоваться» двумя способами. Первый — оставить комментарий, тогда WordPress сбросит cookie с информацией о комментаторе. При последующих загрузках страницы с формой для комментариев будет происходить ее автозаполнение. Второй способ — авторизация на страничке wp-login, но у нее есть свои недостатки. Во-первых, не хотелось бы включать опцию «каждый может зарегистрироваться» и пускать пользователей в админскую панель, пусть даже и «сильно обрезанную». Во-вторых, регистрироваться на standalone-блоге лишь для того, чтобы оставить комментарий, будет далеко не каждый.

Плагин Александра Никулина добавляет «третью» возможность. Оставив OpenID-комментарий, пользователь получит cookie, по которому OpenID-плагин будет «узнавать» его. Это напоминает первый метод, но в cookie используются другие параметры.

Этот подход имеет огромное количество недостатков. Самый большой — незнание авторов других плагинов о том, что пользователь с определенными cookies считается «залогиненным». Эти cookies не опознаются, как принадлежащие WordPress. Конечно, можно добавить в OpenID-плагин фильтр, который, при наличии кеширующего плагина, будет оповещать тот, что пользователь уже зашел, но придется также править .htaccess, что уже не настолько тривиально.

В общем, плагин нуждается в серьезной переделке. И здесь снова есть два подхода — сделать авторизацию по специальным образом составленному «имени пользователя» в cookie или же использовать встроенную в WordPress систему «пользователей» и «ролей». Второй вариант мне представляется более интересным. Думаю, что подобным способом можно сделать даже некое подобие ЖЖшных «сообществ» на движке WordPress — а это уже очень заманчивая перспектива. Если удастся еще и «подружить» это с WordPress MU — то будет совсем здорово.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *