|
Cake-PHP.ru Форум программистов CakePHP (на сайт)
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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']);
|
Перед сохранением. |
|
Вернуться к началу |
|
|
|
|
Вы можете начинать темы Вы можете отвечать на сообщения Вы можете редактировать свои сообщения Вы можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group Русская поддержка phpBB
|