Maison développement back-end tutoriel php Comment faire l'authentification et l'autorisation des utilisateurs dans CakePHP ?

Comment faire l'authentification et l'autorisation des utilisateurs dans CakePHP ?

Jun 05, 2023 am 08:31 AM
cakephp 授权 用户认证

Dans le développement Web, l'authentification et l'autorisation des utilisateurs sont l'une des fonctions très importantes. CakePHP, en tant que framework PHP populaire, fournit de nombreux outils pratiques pour résoudre ces problèmes. Dans cet article, nous présenterons comment effectuer l'authentification et l'autorisation des utilisateurs dans CakePHP.

Qu'est-ce que l'authentification et l'autorisation des utilisateurs ?

Dans les applications Web, l'authentification des utilisateurs fait référence à la vérification de l'identité de l'utilisateur. Cela implique généralement que l'utilisateur saisisse un nom d'utilisateur et un mot de passe, puis que l'application vérifie que ces informations d'identification sont correctes. Après l'authentification, l'application peut identifier l'utilisateur comme connecté, permettant ainsi l'accès aux ressources nécessitant une authentification.

L'autorisation signifie que l'utilisateur a été authentifié, mais qu'il ne peut accéder qu'à des ressources spécifiques dans l'application. Par exemple, les administrateurs peuvent accéder à certaines ressources restreintes que les utilisateurs ordinaires ne peuvent pas accéder.

Authentification utilisateur dans CakePHP

Le cœur de la gestion de l'authentification utilisateur dans CakePHP est le composant Auth. Le composant Auth fournit une méthode facile à utiliser pour gérer l'authentification des utilisateurs, notamment la définition d'objets d'authentification, la configuration des paramètres d'authentification, la génération de pages de connexion et de déconnexion et le contrôle des pages nécessitant une authentification.

Voyons comment implémenter l'authentification des utilisateurs dans CakePHP.

Tout d'abord, vous devez importer le composant Auth depuis le framework CakePHP. Vous pouvez ajouter l'instruction suivante dans votre contrôleur :

public $components = array('Auth');
Copier après la connexion

Ensuite, vous devez configurer le composant Auth pour utiliser l'objet d'authentification. Par exemple, si vous disposez d'un modèle nommé User pour gérer les données utilisateur, vous pouvez configurer le composant Auth comme suit :

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'userModel' => 'User',
                'fields' => array('username' => 'email')
            )
        ),
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login'
        ),
        'loginRedirect' => array(
            'controller' => 'home',
            'action' => 'index'
        ),
        'logoutRedirect' => array(
            'controller' => 'users',
            'action' => 'login'
        )
    )
);
Copier après la connexion

Dans cet exemple, nous avons spécifié que le composant Auth utilise le validateur Form pour l'authentification des utilisateurs. Nous avons également spécifié le modèle User pour gérer les données utilisateur et défini le champ du nom d'utilisateur sur email. Nous avons également mis en place des pages de redirection pour la connexion et la déconnexion.

Maintenant, nous devons implémenter le validateur dans notre modèle utilisateur.

class User extends AppModel {
    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    }
}
Copier après la connexion

Dans cet exemple, nous utilisons la méthode password() fournie par CakePHP pour hacher le mot de passe. Le composant Auth s'authentifie automatiquement en le comparant avec le hachage du mot de passe entrant.

Maintenant, nous devons créer une page de connexion à notre avis. Nous pouvons utiliser le FormHelper intégré de CakePHP pour créer un formulaire de base.

echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('email');
echo $this->Form->input('password');
echo $this->Form->end('Login');
Copier après la connexion

Une fois l'opération de connexion soumise, nous devons spécifier la logique d'authentification. Nous pouvons utiliser le code suivant dans le contrôleur :

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirectUrl());
        } else {
            $this->Flash->error(__('Invalid email or password, try again'));
        }
    }
}
Copier après la connexion

Lors de l'opération de connexion, si le nom d'utilisateur et le mot de passe saisis sont valides, le composant Auth stockera automatiquement les informations de l'utilisateur dans la session et redirigera le navigateur vers la page post-connexion.

Maintenant, nous avons terminé la logique d'authentification des utilisateurs de base, mais vous souhaiterez peut-être restreindre certaines pages pour qu'elles ne soient accessibles qu'aux utilisateurs authentifiés.

Autorisation utilisateur dans CakePHP

Afin de restreindre l'accès à certaines pages uniquement aux utilisateurs authentifiés, nous pouvons utiliser la logique d'autorisation fournie par le composant Auth.

Tout d'abord, nous devons préciser dans notre contrôleur quelles opérations nécessitent l'autorisation de l'utilisateur.

public function beforeFilter() {
    $this->Auth->allow(array('index', 'view'));
}
Copier après la connexion

Dans cet exemple, nous permettons à l'invité d'accéder à l'index et d'afficher les opérations dans le contrôleur.

Nous pouvons ensuite utiliser la méthode isAuthorized() fournie par le composant Auth pour vérifier si l'utilisateur a l'autorisation d'accéder à une ressource spécifique.

public function isAuthorized($user) {
    if (in_array($this->action, array('add', 'edit', 'delete'))) {
        if ($user['role'] != 'admin') {
            return false;
        }
    }
    return true;
}
Copier après la connexion

Dans cet exemple, nous vérifions si cette opération nécessite des droits d'administrateur. Si tel est le cas, vérifiez si le rôle utilisateur est Administrateur. Sinon, retournez false, sinon retournez true.

Il convient de noter que vous devez transmettre le paramètre $user à la méthode isAuthorized() afin que le composant Auth connaisse le rôle et les autorisations de l'utilisateur actuel.

Résumé

Dans cet article, nous avons présenté comment effectuer l'authentification et l'autorisation des utilisateurs dans CakePHP. En utilisant le composant Auth et une configuration de base, vous pouvez rapidement créer des applications Web sécurisées. Bien entendu, l'authentification et l'autorisation des utilisateurs ne sont qu'une partie de la sécurité Web, et d'autres problèmes tels que les attaques par injection, les scripts intersites, etc. doivent être traités avec précaution. Cependant, apprendre à utiliser l'authentification et l'autorisation des utilisateurs dans CakePHP sera un bon début pour garantir que vos applications Web sont plus sécurisées et fiables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

CakePHP travaillant avec la base de données CakePHP travaillant avec la base de données Sep 10, 2024 pm 05:25 PM

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Comment mettre à niveau la version de service à long terme de Win10 Enterprise version 2016 vers la version professionnelle Comment mettre à niveau la version de service à long terme de Win10 Enterprise version 2016 vers la version professionnelle Jan 03, 2024 pm 11:26 PM

Lorsque nous ne souhaitons plus utiliser l'actuelle édition de service à long terme de Win10 Enterprise Edition 2016, nous pouvons choisir de passer à l'édition professionnelle. La méthode est également très simple. Il suffit de modifier certains contenus et d'installer l'image système. Comment changer la version de service à long terme de Win10 Enterprise version 2016 en version professionnelle 1. Appuyez sur win+R, puis entrez « regedit » 2. Collez le chemin suivant directement dans la barre d'adresse ci-dessus : Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 , puis recherchez l'EditionID et remplacez le contenu par "professionnel" pour confirmer

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

See all articles