Bonjour,

Dans le cadre de mes études, je développe un site web, avec CakePHP 2.0.

Cependant je bloque sur l'authentification. J'ai suivi le tutoriel de formation-cakePHP mais sans aucun succès : http://www.formation-cakephp.com/358...ee-cakephp-1-3.

Le site est destiné à des tuteurs et des étudiants. Il y a donc deux types d'utilisateur. J'ai suivi le tuto indiqué ci-dessus (voir code ci-dessous) afin d'implémenter une authentification à double entrée. Mais lorsque je tente de me connecter (je rentre login et password), rien ne se passe. C'est comme si j'étais redirigé sur la page login à nouveau.

Je ne sais plus quoi faire.

Avez-vous des idées ?




Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
// app/controllers/components/app_auth.php
App::import('Component', 'Auth');
 
class AppAuthComponent extends AuthComponent
{
	/**
	 * Configuration par défaut
	 *
	 * @var array
	 */
	var $defaults = array(
		'userModel'      => 'User',
		'userScope'      => array(),
		'fields'         => null,
		'loginAction'    => null,
		'loginRedirect'  => null,
		'logoutRedirect' => null,
		'autoRedirect'   => true,
		'loginError'     => "Identifiant ou mot de passe incorrects.",
		'authError'      => "Vous n'avez pas accès à cette page.",
		'flashElement'   => 'default',
	);
 
	/**
	 * Configurations possibles en fonction du préfixe de la route
	 *
	 * @var array
	 */
	var $configs = array(
		'students' => array(
			'userModel'      => 'Student',
			'userScope'      => null,
			'fields'         => array('username' => 'loginstudent', 'password' => 'passwordstudent'),
			'loginAction'    => array('controller' => 'students', 'action' => 'login', 'students' => false),
			'loginRedirect'  => array('controller' => 'students', 'action' => 'home'),
			'logoutRedirect' => array('controller' => 'students', 'action' => 'login'),
			'flashElement'   => 'public_notice',
		),
		'tutors' => array(
			'userModel'      => 'Tutor',
			'userScope'      => null,
			'fields'         => array('username' => 'logintutor', 'password' => 'passwordtutor'),
			'loginAction'    => array('controller' => 'tutors', 'action' => 'login', 'tutors' => false),
			'loginRedirect'  => array('controller' => 'tutors', 'action' => 'home', 'tutors' => true),
			'logoutRedirect' => array('controller' => 'tutors', 'action' => 'login', 'tutors' => false),
			'flashElement'   => 'public_notice',
		),
	);
 
	/**
	 * Démarrage du composant.
	 * Autorisation si pas de préfixe dans la Route qui a conduit ici.
	 *
	 * @param object $controller Le contrôleur qui a appelé le composant.
	 */
	function startup(&$controller)
	{
		$prefix = null;
 
		if(empty($controller->params['prefix']))
		{
			$this->allow();
		}
		else
		{
			$prefix = $controller->params['prefix'];
		}
 
		// Cas spécial des actions de login et logout, pour lesquelles le préfixe n'existe pas
		if(in_array($controller->action, array('login', 'logout')))
		{
			switch($controller->name)
			{
				case 'tutor':
					$prefix = 'tutors';
					break;
 
				case 'student':
					$prefix = 'students';
					break;
			}
		}
 
		$this->_setup($prefix);
 
		parent::startup($controller);
	}
 
	/**
	 * Définition des variables de config en fonction d'un préfixe
	 *
	 * @param string $prefix
	 */
	function _setup($prefix)
	{
 
		$settings = $this->defaults;
 
		if(array_key_exists($prefix, $this->configs))
		{
 
			$settings = array_merge($settings, $this->configs[$prefix]);
		}
 
		$this->_set($settings);
 
	}
}
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// app/Controller/AppController.php
class AppController extends Controller {
 
 
 
 
var $components = array('AppAuth', 'Session');
 
 
 
}
Code :
1
2
3
4
5
6
7
8
9
10
11
<!-- /views/tutors/tutors_login.ctp -->
<h2>Tutor Access</h2>
 
<?php
echo $this->Session->flash('auth');
 
echo $this->Form->create('Tutor');
echo $this->Form->input('logintutor', array('label' => "Login :"));
echo $this->Form->input('passwordtutor', array('label' => "Password :"));
echo $this->Form->end("Connexion");
?>