Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="Ratso"]разобрался сам. Все действительно правильно, кроме одного. В app_controller нужно выставить теже $cookieName и $cookieKey, что и в users_controller. Иначе при проверке: [code]if (!is_null($cookie)) { [/code] получим False. True получается когда система обращается к isAuthorise, которая в свою очередь идет к users->login, а у контроллера users, как мы уже поняли, $cookieName и $cookieKey правильные. Посему авторизация из кукисов проходила только при обращении к защищенный авторизацией функциям.[/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
Ratso
Добавлено: 24 Июн 2008 00:51:46
Заголовок сообщения:
разобрался сам. Все действительно правильно, кроме одного. В app_controller нужно выставить теже $cookieName и $cookieKey, что и в users_controller. Иначе при проверке:
Код:
if (!is_null($cookie)) {
получим False. True получается когда система обращается к isAuthorise, которая в свою очередь идет к users->login, а у контроллера users, как мы уже поняли, $cookieName и $cookieKey правильные. Посему авторизация из кукисов проходила только при обращении к защищенный авторизацией функциям.
Ratso
Добавлено: 23 Июн 2008 16:34:20
Заголовок сообщения: Auth2 и Cookie в CakePHP 1.2rc1
Помогите решить проблему, пожалуйста! В проекте используется
встроенная в кейк (1.2rc1) система авторизации Auth (если точнее, то
Auth2 из примеров вроде даже отсюда). Необходимо было добавить примочку
"Запомнить меня на этом ПК". Вродебы все просто. Но сайт "вспоминает"
пользователя только при попытке зайти на защищенную авторизацией
страницу. В шаблоне вызывается элемент для шапки, чтобы
поприветствовать пользователя с таким кодом:
Код:
<?php if($session->check('Auth.User')): ?>
Привет, <?php e($session->read('Auth.User.username')); ?>!
<?php else: ?>
Вы не вошли! <?php e($html->link('Войти', '/admin/login')); ?>?
<?php endif; ?>
Ну это сокращенные вариант... Входим на сайт, вводим данные, ставим галочку "запомнить", входим. Кукисы действительно сохраняются в браузере (все зашифровано как положено). Закрывает браузер. Запускаем и входим на заглавную сайта (там выставлено pages/home). И видим... Вы не вошли! Войти?
Когда жмем войти, появляется форма ввода данных и текст "Привет,
<имя пользователя>!". Мне же нужно, чтобы эта напись выводилась сразу при заходе на сайт.
Что мы имеем:
controllers/users_controller.php
Код:
function login(){
if(!empty($this->Auth2->data)) {
if($this->Auth2->login($this->Auth2->data)) {
if ($this->data['User']['remember_me']) {
$cookie = array();
$cookie['username'] = $this->data['User']['username'];
$cookie['password'] = $this->data['User']['password'];
$this->Cookie->write('Auth.User', $cookie, true, '+2 weeks');
}
unset($this->data['User']['remember_me']);
$this->Session->setFlash("Вход успешно выполнен!");
$this->redirect('/admin');
} else $this->Session->setFlash("Не знаю такого пользователя.
Возможно Вы где-то что-то неправильно ввели.");
}
}
В
app_controller
кроме того, что из примера, у меня следующее:
Код:
function beforeFilter() {
$this->Auth2->autoRedirect = false;
if ($this->getUserID() == -1) {
$this->loginFromCookie();
}
}
function loginFromCookie() {
$cookie = $this->Cookie->read('Auth.User');
if (!is_null($cookie)) {
if ($this->Auth2->login($cookie)) {
// Clear auth message, just in case we use it.
$this->Session->del('Message.auth');
//echo "Загружено из кукисов";
//$this->Session->setFlash('Загружено из кукисов');
$this->redirect($this->Auth2->redirect());
} else { // Delete invalid Cookie
//echo "Delete invalid Cookie";
$this->Cookie->del('Auth.User');
}
}
}
function getUserID() {
$usr = $this->Auth2->user();
if (!empty($usr)) {
return $usr['User']['id'];
} else {
return -1;
}
}
Что можете посоветовать?
Если нужно, то вот ссылка на исходники (без графики, самого кейка, но чтоб разобраться в проблеме должно хватить):
http://ifolder.ru/7073347
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».