php - Problème de vérification de connexion avec TP5
巴扎黑
巴扎黑 2017-05-25 15:08:19
0
5
1149

Un problème qui devrait être considéré comme relativement trivial est que lorsque je gère le front-end et le back-end, je dois déterminer s'il existe une session pour déterminer si l'utilisateur est connecté.

Mais la méthode que j'ai vue à travers la documentation est que je ne peux introduire un jugement qu'une seule fois sur chaque page, puis effectuer d'autres opérations. Cependant, il doit y avoir un moyen plus simple de gérer ce problème, je n'arrive vraiment pas à le comprendre. moi-même. S'il vous plaît, aidez-moi !

L'essentiel est de savoir comment le configurer une fois, puis laisser toutes les pages du répertoire spécifié déterminer si vous devez vous connecter, afin de faciliter l'opération suivante

巴扎黑
巴扎黑

répondre à tous(5)
迷茫

Le premier type d'accès aux références : rédiger tous les jugements et vérifications de session dans une classe. Créez une méthode de pré-contrôleur ou un contrôle d'initialisation dans chaque contrôleur et référencez directement la méthode de vérification de connexion de la classe de session dans la méthode.
Le deuxième type d'héritage : chaque contrôleur hérite de la classe de vérification de session, de sorte qu'à chaque accès au contrôleur, il hérite de toutes les classes et méthodes de la session, et définit le contrôle d'initialisation dans la classe de session comme vérification de connexion du séance

Je recommande personnellement la deuxième option car il n'est pas nécessaire d'initialiser le contrôleur dans chaque contrôleur, ce qui réduit le code et facilite la maintenance

世界只因有你

Écrivez une classe de base telle que Base.php et implémentez-la via son _initialize, tel que : Base.php,通过其_initialize来实现,如:

<?php
namespace app\admin\controller;

use think\Controller;

class Base extends Controller{
    public function _initialize(){
        $uid = session('uid');
        if($uid == null){
            $this->rediect('Login/index','请先登录后操作');
        }
    }
}

其中Login.php不能继承Base.php

<?php
namespace app\admin\controller;

use think\Controller;

class Login extends Controller{
    public function _initialize(){
        $uid = session('uid');
        if($uid != null){
            $this->rediect('Index/index','已登录');
        }
    }
}
Parmi eux, Login.php ne peut pas hériter de Base.php, sinon un jugement spécial supplémentaire est requis, tel que : 🎜 rrreee
迷茫

Je suis aussi novice, mais j'ai juste une idée. Après m'être connecté pour stocker la session, je peux écrire une méthode publique pour déterminer la session sur le backend, puis utiliser cette méthode dans le répertoire requis, pour qu'il y ait pas besoin de le stocker dans chaque répertoire. Il est temps de juger !

只是个人想法,没有实践啊!
Peter_Zhu

Écrivez un middleware de vérification (comportement), puis appelez-le dans la route. Vous pouvez spécifier arbitrairement quelles pages doivent appeler ce middleware de vérification.

.

Vous pouvez consulter la partie comportement dans le manuel

给我你的怀抱

Il n'est pas nécessaire d'introduire un jugement sur chaque page. Vous pouvez hériter de tous les contrôleurs d'un contrôleur commun et écrire un jugement de session dans le contrôleur commun

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal