  | 
				Cake-PHP.ru Форум программистов CakePHP (на сайт)  
				 | 
			 
		 
		 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		uran26
  цитировать
 
 
  Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
  | 
		
			
				 Добавлено: 30 Авг 2009 14:17:04    Заголовок сообщения: Компонент Auth | 
				     | 
			 
			
				
  | 
			 
			
				Решил сделать авторизацию на сайте как описано вот тут http://book.cakephp.org/view/172/Authentication.
 
 
То есть есть таблица users с полями username и password,
 
Контроллер Users и его методы isAuthorized, login(пустой) и logout.
 
 
 	  | Код: | 	 		  
 
function isAuthorized() {
 
        return true;      
 
}
 
 | 	  
 
 
 	  | Код: | 	 		  
 
function logout () {
 
      $this->redirect ( $this->Auth->logout () );
 
}
 
 | 	  
 
 
 
Вид login:
 
 	  | Код: | 	 		  
 
<?php
 
   if ( $session->check ( "Message.flash" ) ) 
 
      $session->flash ();
 
   
 
   if ( $session->check ( "Message.auth" ) )
 
      $session->flash ( "auth" ); 
 
   
 
   echo $session->read ( "Auth.user" );
 
   
 
   
 
echo $form->create ( array ( 'controller' => 'users', 'action' => 'login' ) );
 
 
?>
 
 
Name:
 
 
<?php echo $form->input ( 'User.username', array ( 'size' => 64, 'label'=>false ) ); ?>
 
 
Password:
 
 
<?php
 
echo $form->password ( 'User.password', array ( 'size' => 64, 'label' => false ) ); 
 
 
echo $form->submit ( 'Login' ); 
 
?>
 
 | 	  
 
 
Пытаемся логинится - вводим логин и пароль (существующего пользователя с хешированным паролем sha1), получаем:
 
Login failed. Invalid username or password.
 
 
Решил посмотреть какие данные приходят в login, добавил такое:
 
 	  | Код: | 	 		  
 
$this->set ( "data", $this->data['User'] );
 
 | 	  
 
И в вид соответственно: 
 
Что показало мне: array(2) { ["username"]=>  string(4) "test" ["password"]=>  NULL } 
 
 
Dedug сообщает что был выполнен вот такой запрос к базе:
 
 	  | Код: | 	 		  
 
SELECT `User`.`id`, `User`.`username`, `User`.`password` FROM `users` AS `User` WHERE `User`.`username` = 'test' AND `User`.`password` = '20ec9b017e09672c62365b1374f3d42322d05cca' LIMIT 1
 
 | 	  
 
Объясните мне почему password = null ??? Где он теряется??? с моей стороны с $this->data['User']['password'] в контроллере никаких действий не производится. | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		mayar
  цитировать
 
 
  Зарегистрирован: 03 Апр 2009 15:52:14 Сообщения: 24
 
  | 
		
			
				 Добавлено: 09 Сен 2009 10:48:41    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				А ты настроил сам компонент Auth?
 
 
app_controller.php
 
 
 	  | Код: | 	 		  
 
<?php
 
class AppController extends Controller {
 
    var $components = array('Acl', 'Auth');
 
 
    function beforeFilter() {
 
        //Configure AuthComponent
 
        $this->Auth->authorize = 'actions';
 
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
 
        $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
 
        $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'add');
 
    }
 
}
 
?>
 
 
 | 	  
 
 
Делай прямо по шагам:
 
 
http://book.cakephp.org/view/643/Preparing-to-Add-Auth | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
	
	
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы можете начинать темы Вы можете отвечать на сообщения Вы можете редактировать свои сообщения Вы можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
  
Powered by phpBB © 2001, 2005 phpBB Group Русская поддержка phpBB
  
 
 
		 |