Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Механизм и концепция авторизации пользователей на сайте ("в ручную") (http://forum.typo3.ru/showthread.php?t=10343)

dmartynenko 18.10.2012 12:00

Посмотрите системное расширение felogin, с удивлением узнаете что для формы логина не надо делать свой экст :)

И если в дополнение к user/pass передать permalogin=1, то логин будет сохраненным (как долго его ярдо запомнит, задается кажется в localconf.php). Причем все это можно передевать как GET, так и POST - все равно ядро пользователя авторизует.

Ивано 18.10.2012 12:40

Подобное решение мне очень даже подходит и готов даже и не использовать выше описанный код (он даже и не нужен)...
Но есть одно НО.

Вот форму создаю:

<form>

<input name="user">
<input name="pass">
<input name="permalogin" type="hidden" value=1> - запомнить вход пользователя (даже после закрытия открытия браузера)
<input name="pid" type="hidden" value="id-хранилища записей пользователя">
<input type="hidden" name="logintype" value="login" />

И есть еще один параметр котрый , как понимаю, можно передать через hidden - это "redirect_url"
Как понимаю - он должен перенаправить на указанную страницу
в случае успешной авторизации (или возможно буду не прав) --- НО ОН У МЕНЯ ПОЧЕМУ-то не срабатывает - вход в систему есть, а ридеректа нет на заданную страницу...
<input name="redirect_url" type="hidden" value="/index.php?id=303">

Как им возможно воспользоваться или такого параметра нет?:confused:

</form>

dmartynenko 18.10.2012 13:01

Вот как раз redirect_url и прочие вещи - это не из ядра. Ядро только производит логин/логаут и ничего более.

Это уже дополнительная функциональность которую предоставляет экст felogin (поищите redirect_url в felogin\pi1\class.tx_felogin_pi1.php).

Ивано 18.10.2012 13:23

$check = FALSE;
$loginData = array(
'username' => "user",
'uident_text' => "pass",
'status' => 'login',
);

$GLOBALS['TSFE']->fe_user->checkPid = ''; //do not use a particular pid
$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$info['db_user']['checkPidList'] = 1;
$info['db_user']['check_pid_clause'] = 'AND pid IN(362)';
$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $loginData['username']);



$login_success = $GLOBALS['TSFE']->fe_user->compareUident($user,$loginData);

#Если пользователь найден
if($login_success){

$GLOBALS['TSFE']->fe_user->createUserSession($user);
$GLOBALS["TSFE"]->fe_user->loginSessionStarted = TRUE;
$GLOBALS ["TSFE"] ->fe_user->start();

}


Так понимаю в данном коде никак не получиться сохранить сессию на вечно?...

dmartynenko 18.10.2012 13:37

Ну что же вы не проявляете любознательность? :)

Поиск "permalogin" по коду ядра дает что:
1. Можно задать в localconf.php $GLOBALS['TYPO3_CONF_VARS']['FE']['permalogin'] = 2 и включить permalogin глобально.
2. Можно задать его в своем коде перед ручным логином.
3. * Не рекомендую. Можно в конце концов задать permalogin в $_GET или $_POST
Код:

typo3\sysext\cms\tslib\class.tslib_feuserauth.php

if ($this->getMethodEnabled)        {
        $isPermanent = t3lib_div::_GP($this->formfield_permanent);
} else {
        $isPermanent = t3lib_div::_POST($this->formfield_permanent);
}


Ивано 18.10.2012 14:30

В общем permalogin ни 0 ни 1 ни 2 не работает совсем...
Ни так ни так...
Все равно закрываешь браузер и открываешь его по новому вводи пароль:(
Даже попробовал на WinInstaller (TYPO3 4.7.0 - ни работает ни галочка, ни глобальная установка в 2)

dmartynenko 18.10.2012 14:50

Время жизни кук прописали?
Код:

$TYPO3_CONF_VARS['FE']['lifetime'] = '2419200';
Другой броузер пробовали?

Ивано 18.10.2012 15:23

Вложений: 1
Вы правы... все работает на ура!
Картинка в приложении - что настроил...
Пожалуй буду пользоваться простым созданием формы и передачей данных.
А с редиректом на страницу приветствия что нибудь придумаюю...

Спасибо.

Ивано 23.10.2012 12:42

Как понимаю - это hook i для процесса авторизации
 
Хуки для авторизации...
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['postUserLookUp'];
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['postUserL'];

dmartynenko 23.10.2012 13:01

Да, есть хук на логин. Но он вызывается после успешного логина. Т.е. максимум что можно сделать - сохранить какую-то статистику или какие-то связанные с пользователем данные обновить.

Если вам интересно копнуть глубже, посмотрите на Auth Services.
Они основаны на классе tx_sv_authbase (системный экст sv). Один из примеров в репозитории http://typo3.org/extensions/repository/view/eu_ldap

Еще пример: http://jimsuperfly.de/blog/typo3-auth-service/


Часовой пояс GMT +4, время: 23:04.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot