Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Auth component

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
nws

цитировать



Зарегистрирован: 25 Фев 2008 15:42:23
Сообщения: 96

СообщениеДобавлено: 21 Мар 2009 22:29:15    Заголовок сообщения: Auth component Ответить с цитатой

Всем привет!

Мне надо к форме авторизации подключить капчу, если я пишу:

Код:
function login()
{
    if ( strtolower($this->data['User']['captcha']) == strtolower( $this->Session->read('captcha')) ) {
       //redirect 1
  }
  else
  {
      //redirect 2
   }
}


Если был введён правильно логин/пароль и не правильно капча идет redirect1

Можно как-то управлять логином?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
michas

цитировать



Зарегистрирован: 28 Янв 2008 11:28:31
Сообщения: 123

СообщениеДобавлено: 23 Мар 2009 09:25:19    Заголовок сообщения: Ответить с цитатой

Можно удалять сессию.
Код:

$this->Session->del('Auth');
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Igor

цитировать



Зарегистрирован: 21 Мар 2009 13:49:54
Сообщения: 2

СообщениеДобавлено: 13 Апр 2009 12:35:08    Заголовок сообщения: Ответить с цитатой

Дабы не создавать новую тему, буду писать здесь. Задача состоит в создании подобия Адресной книги с 2-мя уровнями доступа (для всех и админа). Отличие лишь в том, что админ может удалять и редактировать записи.
В БД есть 2 таблицы users(информация о людях: ФИО, адрес, мыло итд.) и admins с полями id username password.
Для вывода информации для всех использую MVC users и создаю в отображении форму
Код:

<?php echo $form->create('Admin',array('type'=>'post','action' => 'login')); ?>
   <?php echo $form->text('Admin.login'); ?>
   <?php echo $form->password('Admin.password');?>
<?php echo $form->end('Login'); ?>

Так же создаю MVC admins.
Далее нужно реализовать переход в Админку с проверкой логина и пароля, который был введён. В этом у меня заключается проблема.
Судя с мануалов, достаточно сделать так:
В контроллере, в котором находится action, написать:
Код:

class AdminsController extends AppController {
      var $name = 'Admins';
      var $components = array('Auth');
      function login() {
      }
      function logout(){
         $this->Session->setFlash('Logout');
         $this->redirect($this->Auth->logout());
      }
}

и создать файлик app_controller.php, содержимое которого будет:
Код:

<?php
class AppController extends Controller {

   var $components = array('Auth');

   function beforeFilter(){
      //Set up Auth Component
      $this->Auth->loginAction = array('controller' => 'admins', 'action' => 'login');
      $this->Auth->loginRedirect = array('controller' => 'admins', 'display' => 'home');
      $this->Auth->logoutRedirect = '/';
      $this->Auth->allow('*');
      
      }
}

И как написано, для cake 1.2 этого достаточно для аутентификации пользователя.
Добавляю в admins пользователя так(метод находится в UsersController):
Код:

function admin_add() {
         if (! empty ( $this->data )) {
            $dat1['Admin'] = $this->data['User'];
            $this->Admin->save($dat1);
         if ($this->Admin->save($dat1)) {
            $this->Session->setFlash ( __ ( 'The User has been saved', true ) );
            $this->redirect ( array ('action' => 'index' ) );
         }
         else {
            $this->Session->setFlash ( __ ( 'The User could not be saved. Please, try again.', true ) );
         }
         }
      }

и view
Код:

<div class="users form">
<?php echo $form->create('User');?>
<fieldset>
<legend><?php __('Add User');?></legend>
<?php
echo $form->input('username');
echo $form->input('password');
?>
</fieldset>
<?php echo $form->end(__('Submit', true));?>
</div>
<div class="actions">
<ul>
<li><?php echo $html->link(__('List Users', true), array('action'=>'index'));?></li>
</ul>
</div>

Но при вводе логина и пароля, как верного так и нет, просто перебрасывает на login() и всё.
Подскажите пожалуйста, где ошибка.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Igor

цитировать



Зарегистрирован: 21 Мар 2009 13:49:54
Сообщения: 2

СообщениеДобавлено: 13 Апр 2009 18:35:15    Заголовок сообщения: Ответить с цитатой

тогда если можно, дайте пример. Формы и БД. Если введённые данные совпадают с инфой в БД, тогда редирект на другую страничку, если нет - болт. В примерах мануалов, login() остаётся пустым, ибо кейк1.2 делает всё сам благодаря auth( я так понял по мануалам и тому, что мне рассказывали). Кому не лень, пожалуйста, напишите пример сего действа.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
michas

цитировать



Зарегистрирован: 28 Янв 2008 11:28:31
Сообщения: 123

СообщениеДобавлено: 14 Апр 2009 11:05:37    Заголовок сообщения: Ответить с цитатой

Перед сохранением пароля в базу его надо хешировать. У вас этого не происходит.
Код:

$this->Auth->hashPasswords($dat1['Admin']);

Перед сохранением.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru