[Joomla 1.5.9.] У меня есть собственный движок. Но решил я попробовать часть сайта сделать на джумле. Засунул ее в подкаталог, синхронизировал базы пользователей. Теперь задача - когда входят в аккаунт на моем сайте, чтобы и в джумле тоже автоматически (прозрачно) заходило. То есть логин в моем движке значит и логин в джумле. Я использовал вот такой код, чтобы сделать джумло-сессию: Код (PHP): global $_SERVER; define( '_JEXEC', 1 ); define( 'DS', DIRECTORY_SEPARATOR ); $baseFolder = 'C:/www/site/joomla/'; define('JPATH_BASE', $baseFolder ); define('HTTP_HOST', 'http://site/joomla/' ); $_SERVER['HTTP_HOST'] = 'http://site/joomla/'; $_SERVER['SCRIPT_NAME'] = 'index.php'; $_SERVER['SCRIPT_FILENAME'] = 'index.php'; require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' ); $mainframe =& JFactory::getApplication('site'); $mainframe->initialise(); JPluginHelper::importPlugin('system'); $mainframe->triggerEvent('onAfterInitialise'); $options = array(); $options['remember'] = true; $options['return'] = 'index.php'; $credentials = array(); $credentials['username'] = 'login'; $credentials['password'] = 'pass'; $mainframe->login($credentials, $options); В отдельном файле работает отлично. Но если вставить этот код в мой код (там, где авторизация происходит у меня), то выходит следующее: все переменные как будто бы обнуляют свои значения. Ощущение, что пробегая этот код интерпретатор сбрасывает значения вообще всего, подключение к бд и сессии в том числе. Я даже подозреваю, что так и задумывалось. Но как мне это обойти? Может быть есть другой способ сделать сессию авторизации в джумле "ручками" из моего движка?
По сути авторизация это: * Запись в таблицу сессий новой сессии * Отдача пользователю правильной куки, что бы джумла воспринимала его как своего Вопрос - движок и джумла на разных доменах? Если да, то отдать ему куку не получится, ибо браузер тупо не примет ее для домена джумлы.
Похожая ситуация. Я имею огромный парк сайтов. Авторизация на одно означет авторизацию на всех. В двух словах при авторизации происходит отправка данных в аккаунтинг(login.by), этот login.by выставляет на всем парке сайтов куку(isLogin) с уникальным значением. Да я знаю что нельзя выставить куку для другого домена, но я выставляю. Так вот аутентификация на сайте Джумлы происходит в момент как пользователь с правильной кукой зашел на сайт, скрипт опять обращаеться в в аккаунтинг(login.by) но у же не с логином и паролем, а с кукой(isLogin). На что получает ответ что по этой сесси вошел пользователь "user11". Как мне заставить джумлу аутентифицировать этого пользователя, я не знаю его пароля(!!). Только имя пользователя и команду с верху что надо произвести логин. Я так понимаю что мне нужно будет влезть в механизм старта сесии и выстваления джумловской куки. Но что-то в документации я не нашел описание механизма аутентификации.
Думаю, что стоит использовать такую схему Суть такая - у вас есть цепочка сайтов, в которой вы хотите ввести массовую авторизацию. При авторизации на любом сайте из этой цепочки цепочки управление передается "Auth server", лучше, что бы это был отдельный сервер. На сервер передаются логин и пароль вошедшего пользователя, желательно в зашифрованном виде. Сервер пробегает по всей цепочке сайтов и авторизирует текущего пользователя на каждом сайте цепи. Вот материал, который поможет при организации "кукисов" ))) З,Ы,: решение имеет место быть, ТОЛЬКО в случае одинакового набора пользователей на всех сайтах, либо можно централизовать этот набор на Auth-сервере.
Сервер естественно, отдельный и даже не один. В принципе проблему решил, остались еще пару тонкостей...но это мелочи. Синхронизация.. да же не знаю а зачем. Логин сейрвер говорит что это "Вася2010", его в базе текущего сайта нету, он быстренько по имеющимся данным создается и все счастливы. Т.е. схема примерно следующая 1. Проверка, есть ли кука? Валидная ли имеющаяся кука, если есть? 2. Есть ли в базе этот пользователь? Создание пользователя, если нету. 3. Логин пользователя.
http://extensions.joomla.org/extensions/access-a-security/authentication-bridges/3723 Попробуйте сделать плагин к данному расширению