0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 3260 Просмотров
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Заказчик хочет иметь возможность отправлять юзерам письмо, те по нему кликают и попадают в нужное место уже авторизованными.

Ломать Джумлу совсем не хочется :-) по этому решил набросать плагин авторизации, все тут крайне просто, только возник один момент.
Я про токены, где их взять ? где они в базе хранятся ?
из просмотра исходников стало ясно что при каждой новой сессии генерируется кука с труднопроизносимым именем :-) и пока не понятным  мне значение (полагаю что это возможно ИД сессии).
Так вот когда начинается процесс авторизации необходимо что б эта переменная была, а что б она появилась в моем случае мне бы знать где ее найти .. ?
Подскажите пожалуйста, а я тогда выложу сей плагин вдруг кому пригодится...

Спасибо.

Зы. Возможно токен этот настраивается в админке как время действия сессии.. и тогда вообще не понятно возможно ли сделать скрытую авторизацию на джумле ...  :'(
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Скрытая авторизация возможно ли ?
« Ответ #1 : 18.06.2009, 15:18:37 »
Рекомендую ознакомиться с содержимым /plugins/authentication/. Мне кажется там достаточно примеров реализации авторизации.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Скрытая авторизация возможно ли ?
« Ответ #2 : 18.06.2009, 16:00:19 »
Спасибо за совет но я в принципе не о реализации спрашиваю. Мало того не считая себя полным идиотом я естественно взял оттуда пример и просто переделал под свои нужды!

Я понимаю что когда у тебя большие звезды то можно себя так вести, но я бы Вас попросил перечитать еще разок пост. И если что то в нем не понятно спросить по теме.
Спасибо.

ЗЫ. написав плагин я столкнулся с ошибкой
Invalid Token
в коде это тут
JRequest::checkToken('request') or jexit( 'Invalid Token' );
« Последнее редактирование: 18.06.2009, 16:05:49 от x00xer »
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Скрытая авторизация возможно ли ?
« Ответ #3 : 18.06.2009, 17:55:06 »
Что никто ни когда не сталкивался с этим ??
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Скрытая авторизация возможно ли ?
« Ответ #4 : 18.06.2009, 22:28:14 »
Хм, ну если с реализацией плагина все понятно, то и с токенами по идее проблем быть не должно. Смотрите, в форме логина (/modules/mod_login/tmpl/default.php) в конце формы стоит доп. параметр:

Код: php
<?php echo JHTML::_( 'form.token' ); ?>

Он в конечном счете вызывает метод token класса JHTMLForm  (/libraries/joomla/html/html/form.php), а там название параметра получается посредством вызова  JUtility::getToken():

Код: php
return '<input type="hidden" name="'.JUtility::getToken().'" value="1" />';

Посмотрите, каким образом он там (/libraries/joomla/utilities/utility.php) формируется и думаю ситуация прояснится.

Вот кстати кусок описания (из описания метода getToken класса JSession):

Цитировать
Tokens are used to secure forms from spamming attacks. Once a token
has been generated the system will check the post request to see if
it is present, if not it will invalidate the session.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Скрытая авторизация возможно ли ?
« Ответ #5 : 21.06.2009, 10:28:25 »
 :(
Я наверно чего то не догоняю, вот смотрите что мне нужно:
сформировать ссылку по которой можно авторизоваться на сайте не вводя свой логин и пароль

Я для этого создал отдельную таблицу в БД в которой сть два поля юзер-айди и случайное число.
Я хотел что б можно было бы ввести
http://mysite.ru/index.php?option=com_user&task=login&id=78&rand=6e3d1f237b59c2a5a6a9e8655c6a9275
и пользователь считается авторизованным!
Для этого я написал свой плагин авторизации, в котором я смотрю наличиле в урле
id && rand и если они соответствуют записям в моей таблице, то все гуд

Но судя по исходникам Joomla мне надо к урлу добавить нечто вот такое
&6e3d1f237b59c2a5a6a9e8655c6a9275=1
А это число походу формируется здесь
$hash      = JUtility::getHash( $user->get( 'id', 0 ).$session->getToken( $forceNew ) );
Однако при формировании его  он же запоминается в сессии ..
т.е. я в урле должен передать хеш, который Джумла сможет вытащить из своей сессии.
Во первых как Джумла знает из какой сессии ей надо его вытаскивать ? (это если честно я реально не пойму)
а во-вторых есть же время жизни...

Вот пример
вот ссылка для авторизации
http://mysite.ru/index.php?option=com_user&task=login&id=78&rand=6e3d1f237b59c2a5a6a9e8655c6a9275&6e3d1f237b59c2a5a6a9e8655c6a9275=1
то вот этот хеш - 6e3d1f237b59c2a5a6a9e8655c6a9275
изначально мне надо его как то сформировать, но он формируется из сессионных данных, более того даже если я его как то сформирую то при переходе по этой ссылке
Джумла должна будет сформировать точно такой же и найти его у меня в урле, а делает она это опять беря из сесси токен, а почему он там к этому моменту будет ? и почему там будет именно мой ?
Пожалуйста объясните на пальцах ??

Спасибо.

З.Ы. я реально прошу помощи у людей которые видели исходники Джумлы и знают как она работает.
З.Ы2. Пока я склоняюсь к тому что такого плана авторизация таким образом как я задумал реализовать на джумле не возможно. Очень надеюсь что я ошибаюсь.
« Последнее редактирование: 21.06.2009, 10:34:59 от x00xer »
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Скрытая авторизация возможно ли ?
« Ответ #6 : 22.06.2009, 16:02:05 »
Гуру Вы где ?
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Скрытая авторизация возможно ли ?
« Ответ #7 : 22.06.2009, 16:07:07 »
Хм, вопрос про то, откуда брать эти токены для внешней авторизации конечно интересный. Но в принципе, можно по идее пойти более простым путем - накидать очень простенький компонент, который будет содержать лишь одну ветку - реализацию логина, которая в принципе будет почти копией аналогичной ветки в com_user, за тем исключением, что из нее убрать проверку токенов.

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

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Скрытая авторизация возможно ли ?
« Ответ #8 : 22.06.2009, 16:50:24 »
Токен то создать можно но он то базируется на сессии которая из вне в принципе ни как не доступна ? правильно ведь ?

*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Скрытая авторизация возможно ли ?
« Ответ #9 : 22.06.2009, 17:19:24 »
Токен то создать можно но он то базируется на сессии которая из вне в принципе ни как не доступна ? правильно ведь ?
ну да, до обращения к странице она неизвестна...
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Скрытая авторизация возможно ли ?
« Ответ #10 : 22.06.2009, 18:09:05 »
Вот тебе и расширение функционала Joomla без переписывания ядра ... ((
а думал сейчас я тут плагин на катаю и дело в шляпе .. фак!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Возможно ли как-то переопределить метод в классе компонента не редактируя его?

Автор enshtein

Ответов: 0
Просмотров: 1244
Последний ответ 03.03.2010, 13:20:25
от enshtein
Сбрасывается авторизация

Автор Виталик

Ответов: 1
Просмотров: 1484
Последний ответ 13.07.2009, 21:48:29
от Виталик
Подскажите на php возможно реализовать добавление материала в нужный раздел и категорию?

Автор waraxeman

Ответов: 7
Просмотров: 1584
Последний ответ 15.06.2009, 17:21:09
от beliyadm
Модуль в материале. Возможно?

Автор monkeymonk

Ответов: 1
Просмотров: 1245
Последний ответ 16.05.2009, 17:52:58
от shprota