Heim PHP-Framework YII So melden Sie sich bei yii an

So melden Sie sich bei yii an

Dec 31, 2019 pm 02:56 PM
yii

So melden Sie sich bei yii an

Beispiel für die yii-Anmeldemethode:

1. LoginForm.php

Benutzeranmeldemodul, es werden Benutzername und Passwort übermittelt, also wir Sie Sie müssen zuerst ein Modell erstellen, um die von Benutzern übermittelten Daten speziell zu verarbeiten. Erstellen Sie daher zunächst ein neues LoginForm.php. Das Folgende ist der Code:

<?php
 
namespace app\modules\backend\models;
 
use Yii;
use yii\base\Model;
 
/**
 * LoginForm is the model behind the login form.
 */
class LoginForm extends Model
{
    public $username;
    public $password;
    public $rememberMe = true;
 
    private $_user = false;
 
 
    /**
     * @return array the validation rules.
     */
    public function rules()<span style="white-space:pre">		</span>//①
    {
        return [
            // username and password are both required
            [[&#39;username&#39;, &#39;password&#39;], &#39;required&#39;,&#39;message&#39;=>""],
            // rememberMe must be a boolean value
            [&#39;rememberMe&#39;, &#39;boolean&#39;],
            // password is validated by validatePassword()
            [&#39;password&#39;, &#39;validatePassword&#39;],
        ];
    }
 
    /**
     * Validates the password.
     * This method serves as the inline validation for password.
     *
     * @param string $attribute the attribute currently being validated
     * @param array $params the additional name-value pairs given in the rule
     */
    public function validatePassword($attribute, $params)
    {
        if (!$this->hasErrors()) {
            $user = $this->getUser();
 
            if (!$user || !$user->validatePassword($this->password)) {
                $this->addError($attribute, &#39;Incorrect username or password.&#39;);
            }
        }
    }
 
    /**
     * Logs in a user using the provided username and password.
     * @return boolean whether the user is logged in successfully
     */
    public function login()
    {
        if ($this->validate()) {
            if($this->rememberMe)
            {
                $this->_user->generateAuthKey();//③
            }
            return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
        }
        return false;
    }
 
    /**
     * Finds user by [[username]]
     *
     * @return User|null
     */
    public function getUser()
    {
        if ($this->_user === false) {
            $this->_user = User::findByUsername($this->username); //②
        }
 
        return $this->_user;
    }
}
Nach dem Login kopieren

Dieses Modell wird basierend auf dem LoginForm geändert, das mit der Basisversion geliefert wird Der größte Teil des Codes ist vorhanden. Beachten Sie hier den folgenden Code:

Die Codenummer ① ist die Regel. Die Regeln definieren die Regeln für die ausgefüllten Daten. Überprüfen Sie, ob die ausgefüllten Daten vorhanden sind ist leer, ob es dem Format entspricht usw., unter denen es eine gibt Die Spalte ist „Passwort“ und die entsprechende Regel ist „validatePassword“, die automatisch die Methode „validatePassword()“ der aktuellen Klasse aufruft. Achten Sie darauf, sie zu unterscheiden die Methode, die der Benutzerklasse unten entspricht.

Codenummer ② ruft die findByUsername-Methode in der User-Klasse auf. Diese User-Klasse wird unten geschrieben, hauptsächlich um eine AR-Klasseninstanz zum Vergleich mit den aktuellen LoginForm-Daten zurückzugeben.

Die Codenummer ③ wird hier vorerst nicht erwähnt. Wir werden sie erwähnen, wenn wir über die Cookie-Anmeldung sprechen.

2. User.php

(1) ActiveRecord-Klasse

Nach dem Ausfüllen von LoginForm fehlt uns noch etwas, das wir noch erhalten müssen Die Datenbank entnimmt die entsprechenden Daten zum Vergleich. Als Nächstes müssen wir eine Klasse für die aus der Datenbank erhaltenen Daten vervollständigen. Der vollständige Name lautet ActiveRecord Daten finden. Solange der Klassenname und die Datentabelle identisch sind, können Daten aus dieser Datentabelle abgerufen werden, zum Beispiel:

<?php
namespace app\modules\backend\models;
use yii\db\ActiveRecord;
 
class User extends ActiveRecord{       } ?>
Nach dem Login kopieren

Sie können auch den zurückgegebenen Tabellennamen hinzufügen Überschreiben Sie einfach die folgende Methode in dieser Klasse:

public static function tableName(){
		return &#39;user&#39;;
	}
Nach dem Login kopieren

(2) IdentityInterface-Schnittstelle

Um Daten aus der Datenbank zu finden, müssen Sie im Allgemeinen nur die AR-Klasse erben. Bei uns handelt es sich um ein Benutzeranmeldemodell, dessen Kern die Verifizierung ist. Daher ist es selbstverständlich, die Kernverifizierungsfunktion zu implementieren, genau wie „validatePassword“ im LoginForm-Modell erwähnt, und die eigentliche Verifizierungslogik wird im aktuellen Benutzermodell vervollständigt. Im Allgemeinen müssen Sie zum Implementieren der IdentityInterface-Schnittstelle die folgenden Methoden implementieren:

    public static function findIdentity($id);  //①
 
    public static function findIdentityByAccessToken($token, $type = null);   //②
 
    public function getId();    //③
 
    public function getAuthKey();   //④
 
    public function validateAuthKey($authKey);    //⑤
Nach dem Login kopieren

①findIdentity: Suchen Sie die Daten, die der Datentabelle entsprechen, basierend auf der ID

②findIdentityByAccessToken dient zum Suchen der entsprechenden Daten Daten basieren auf AccessToken-Daten (oben erwähnt) und AccessToken. Wir haben dieses Feld auch in der Datentabelle. Wofür wird es also verwendet? Tatsächlich ist AccessToken in unserem aktuellen Benutzeranmeldemodell nicht sehr nützlich. Es wird speziell für die Resetful-Anmeldeüberprüfung verwendet. Die Details finden Sie hier.

③getId: Gibt die ID zurück, die der aktuellen AR-Klasse entspricht

④getAuthKey: Gibt den auth_key zurück, der der aktuellen AR-Klasse entspricht

⑤validateAuthKey: Diese Methode ist wichtiger und wir werden es tun Sprechen Sie später darüber. Der Kern der Cookie-Anmeldeüberprüfung ist erreicht.

Implementieren Sie die Schnittstelle in unserer User.php und schreiben Sie dann die obige Methode neu. Der vollständige User.php-Code lautet wie folgt:

$token]);
	}
 
	public static function findByUsername($username){     //①
		return static::findOne(['username'=>$username]); 
	}
 
	public function getId(){
		return $this->id;
	}
 
	public function getAuthkey(){
		return $this->auth_key;
	}
 
	public function validateAuthKey($authKey){
		return $this->auth_key === $authKey;
	}
 
	public function validatePassword($password){          //②
		return $this->password === md5($password);
	}
 
   	 /**
    	 * Generates "remember me" authentication key
    	 */
        public function generateAuthKey()                    //③
        {
       		$this->auth_key = \Yii::$app->security->generateRandomString();
       		$this->save();
        }
 
}
?>
Nach dem Login kopieren

①findByUsername(): Im LoginForm-Code ist dies Der Zweck der Methode besteht darin, ein Datenelement zurückzugeben, das mit dem Benutzernamen in der Datentabelle übereinstimmt, dh eine AR-Instanz, basierend auf dem vom Benutzer übermittelten Benutzernamen.

②validatePassword(): Hier wird das vom Benutzer übermittelte Passwort mit dem Passwort der aktuellen AR-Klasse verglichen.

③generateAuthKey(): Generiert einen zufälligen Auth_Key für die Cookie-Anmeldung.

Es wurden insgesamt zwei Modellklassen geschrieben: LoginForm und User. Eine dient zum Empfangen von von Benutzern übermittelten Daten und die andere zum Abrufen von Daten aus der Datenbank.

Controller

Controller, der hauptsächlich für die Datenübermittlung verwendet wird, füllt die vom Benutzer übermittelten Daten in das entsprechende Modell (Modell) und rendert dann die Ansicht weiter (Ansicht). ) basierend auf den vom Modell zurückgegebenen Informationen oder führen Sie eine andere Logik aus.

Nennen Sie hier den Controller LoginController.php. Das Folgende ist der vollständige Implementierungscode:

<?php
 
namespace app\controllers;
 
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;
 
class SiteController extends Controller
{
    public function actionIndex()
    {
        return $this->render(&#39;index&#39;);
    }
 
    public function actionLogin()
    {
        if (!\Yii::$app->user->isGuest) {     //①
            return $this->goHome();
        }
 
        $model = new LoginForm();             //②
        if ($model->load(Yii::$app->request->post()) && $model->login()) {      //③
            return $this->goBack();          //④
        }
        return $this->render(&#39;login&#39;, [      //⑤
            &#39;model&#39; => $model,
        ]);
    }
 
    public function actionLogout()
    {
        Yii::$app->user->logout();
 
        return $this->goHome();
    }
}
Nach dem Login kopieren

① Erster Richter von Yii::$app->user->isGuest, Ob der Der aktuelle Benutzermodus ist der Gastmodus, dh er ist nicht angemeldet. Wenn der Benutzer angemeldet ist, werden die Informationen des aktuell angemeldeten Benutzers in der Benutzerklasse gespeichert.

② Wenn Sie derzeit Besucher sind, wird zuerst ein LoginForm-Modell instanziiert

③ Diese Codezeile ist der Kern der gesamten Anmeldemethode, zuerst: $model->load( Yii::$ app->request->post()) füllt die Post-Daten in $model, also das LoginForm-Modell. Wenn true zurückgegeben wird, ist das Füllen erfolgreich. Weiter: $model->login(): Führen Sie die login()-Methode in der LoginForm-Klasse aus. Anhand der login()-Methode können Sie erkennen, dass eine Reihe von Überprüfungen durchgeführt werden.

Ansicht

Nach der Implementierung des Modells und des Controllers ist der nächste Schritt der Ansichtsteil. Da der Benutzer Daten eingeben muss, müssen wir in Yii2 ein Formular bereitstellen Generieren Sie schnell das Formular. Der Code lautet wie folgt:

<?php
 
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model app\models\LoginForm */
 
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
 
$this->title = &#39;Login&#39;;
$this->params[&#39;breadcrumbs&#39;][] = $this->title;
?>
<div class="site-login">
    <h1><?= Html::encode($this->title) ?></h1>
    <p>Please fill out the following fields to login:</p>
    <?php $form = ActiveForm::begin([
        &#39;id&#39; => &#39;login-form&#39;,
        &#39;options&#39; => [&#39;class&#39; => &#39;form-horizontal&#39;],
        &#39;fieldConfig&#39; => [
            &#39;template&#39; => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>",
            &#39;labelOptions&#39; => [&#39;class&#39; => &#39;col-lg-1 control-label&#39;],
        ],
    ]); ?>
        <?= $form->field($model, &#39;username&#39;)->textInput([&#39;autofocus&#39; => true]) ?>
        <?= $form->field($model, &#39;password&#39;)->passwordInput() ?>
        <?= $form->field($model, &#39;rememberMe&#39;)->checkbox([
            &#39;template&#39; => "<div class=\"col-lg-offset-1 col-lg-3\">{input} {label}</div>\n<div class=\"col-lg-8\">{error}</div>",
        ]) ?>
        <div class="form-group">
            <div class="col-lg-offset-1 col-lg-11">
                <?= Html::submitButton(&#39;Login&#39;, [&#39;class&#39; => &#39;btn btn-primary&#39;, &#39;name&#39; => &#39;login-button&#39;]) ?>
            </div>
        </div>
    <?php ActiveForm::end(); ?>
    <div class="col-lg-offset-1" style="color:#999;">
        You may login with <strong>admin/admin</strong> or <strong>demo/demo</strong>.<br>
        To modify the username/password, please check out the code <code>app\models\User::$users</code>.
    </div>
</div>
Nach dem Login kopieren

Empfohlenes Lernen: yii-Framework

Das obige ist der detaillierte Inhalt vonSo melden Sie sich bei yii an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So entwickeln Sie mit dem PHP-Framework Yii ein hochverfügbares Cloud-Backup-System So entwickeln Sie mit dem PHP-Framework Yii ein hochverfügbares Cloud-Backup-System Jun 27, 2023 am 09:04 AM

Mit der kontinuierlichen Weiterentwicklung der Cloud-Computing-Technologie ist die Datensicherung zu etwas geworden, das jedes Unternehmen durchführen muss. In diesem Zusammenhang ist es besonders wichtig, ein hochverfügbares Cloud-Backup-System zu entwickeln. Das PHP-Framework Yii ist ein leistungsstarkes Framework, das Entwicklern dabei helfen kann, schnell leistungsstarke Webanwendungen zu erstellen. Im Folgenden wird vorgestellt, wie Sie mit dem Yii-Framework ein hochverfügbares Cloud-Backup-System entwickeln. Entwerfen des Datenbankmodells Im Yii-Framework ist das Datenbankmodell ein sehr wichtiger Teil. Denn das Datensicherungssystem erfordert viele Tabellen und Beziehungen

Symfony vs Yii2: Welches Framework eignet sich besser für die Entwicklung umfangreicher Webanwendungen? Symfony vs Yii2: Welches Framework eignet sich besser für die Entwicklung umfangreicher Webanwendungen? Jun 19, 2023 am 10:57 AM

Da die Nachfrage nach Webanwendungen weiter wächst, haben Entwickler bei der Auswahl von Entwicklungsframeworks immer mehr Möglichkeiten. Symfony und Yii2 sind zwei beliebte PHP-Frameworks. Sie verfügen beide über leistungsstarke Funktionen und Leistung. Welches Framework ist jedoch besser geeignet, wenn es darum geht, umfangreiche Webanwendungen zu entwickeln? Als nächstes führen wir eine vergleichende Analyse von Symphony und Yii2 durch, um Ihnen zu helfen, eine bessere Wahl zu treffen. Grundlegende Übersicht Symphony ist ein Open-Source-Webanwendungs-Framework, das in PHP geschrieben ist und darauf aufbaut

Datenabfrage im Yii-Framework: Effizienter Zugriff auf Daten Datenabfrage im Yii-Framework: Effizienter Zugriff auf Daten Jun 21, 2023 am 11:22 AM

Das Yii-Framework ist ein Open-Source-PHP-Webanwendungsframework, das zahlreiche Tools und Komponenten zur Vereinfachung des Prozesses der Webanwendungsentwicklung bereitstellt, wobei die Datenabfrage eine der wichtigen Komponenten ist. Im Yii-Framework können wir eine SQL-ähnliche Syntax verwenden, um auf die Datenbank zuzugreifen und Daten effizient abzufragen und zu bearbeiten. Der Abfrage-Builder des Yii-Frameworks umfasst hauptsächlich die folgenden Typen: ActiveRecord-Abfrage, QueryBuilder-Abfrage, Befehlsabfrage und Original-SQL-Abfrage

Wie verwende ich das Yii3-Framework in PHP? Wie verwende ich das Yii3-Framework in PHP? May 31, 2023 pm 10:42 PM

Mit der Weiterentwicklung des Internets wird auch die Nachfrage nach der Entwicklung von Webanwendungen immer größer. Für Entwickler erfordert die Entwicklung von Anwendungen ein stabiles, effizientes und leistungsstarkes Framework, das die Entwicklungseffizienz verbessern kann. Yii ist ein führendes Hochleistungs-PHP-Framework, das umfangreiche Funktionen und gute Leistung bietet. Yii3 ist die nächste Generation des Yii-Frameworks, das die Leistung und Codequalität basierend auf Yii2 weiter optimiert. In diesem Artikel stellen wir vor, wie Sie das Yii3-Framework zum Entwickeln von PHP-Anwendungen verwenden.

Yii2 vs. Phalcon: Welches Framework eignet sich besser für die Entwicklung von Grafik-Rendering-Anwendungen? Yii2 vs. Phalcon: Welches Framework eignet sich besser für die Entwicklung von Grafik-Rendering-Anwendungen? Jun 19, 2023 am 08:09 AM

Im aktuellen Informationszeitalter sind Big Data, künstliche Intelligenz, Cloud Computing und andere Technologien in den Fokus großer Unternehmen gerückt. Unter diesen Technologien hat die Grafikkarten-Rendering-Technologie als leistungsstarke Grafikverarbeitungstechnologie immer mehr Aufmerksamkeit erhalten. Die Grafikkarten-Rendering-Technologie wird häufig in der Spieleentwicklung, bei Film- und Fernsehspezialeffekten, im technischen Modellbau und in anderen Bereichen eingesetzt. Für Entwickler ist die Wahl eines Frameworks, das zu ihren Projekten passt, eine sehr wichtige Entscheidung. Unter den aktuellen Sprachen ist PHP eine sehr dynamische Sprache. Einige hervorragende PHP-Frameworks wie Yii2, Ph

Yii2-Programmierhandbuch: So führen Sie den Cron-Dienst aus Yii2-Programmierhandbuch: So führen Sie den Cron-Dienst aus Sep 01, 2023 pm 11:21 PM

Wenn Sie fragen: „Was ist Yii?“ schauen Sie sich mein vorheriges Tutorial an: Einführung in das Yii Framework, das die Vorteile von Yii bespricht und die Neuerungen in Yii 2.0 beschreibt, das im Oktober 2014 veröffentlicht wurde. Hmm> In dieser Serie „Programmieren mit Yii2“ werde ich die Leser in die Verwendung des Yii2PHP-Frameworks einführen. Im heutigen Tutorial werde ich Ihnen zeigen, wie Sie die Konsolenfunktionalität von Yii nutzen können, um Cron-Jobs auszuführen. In der Vergangenheit habe ich wget – eine über das Internet zugängliche URL – in einem Cron-Job verwendet, um meine Hintergrundaufgaben auszuführen. Dies wirft Sicherheitsbedenken auf und hat einige Leistungsprobleme zur Folge. Während ich in unserer Serie „Sicherheit für Startup“ einige Möglichkeiten zur Risikominimierung besprochen habe, hatte ich gehofft, auf konsolengesteuerte Befehle umsteigen zu können

Yii2 vs Symfony: Welches Framework ist besser für die API-Entwicklung? Yii2 vs Symfony: Welches Framework ist besser für die API-Entwicklung? Jun 18, 2023 pm 11:00 PM

Mit der rasanten Entwicklung des Internets sind APIs zu einer wichtigen Möglichkeit geworden, Daten zwischen verschiedenen Anwendungen auszutauschen. Daher wird es immer wichtiger, ein API-Framework zu entwickeln, das einfach zu warten, effizient und stabil ist. Bei der Auswahl eines API-Frameworks sind Yii2 und Symfony zwei beliebte Optionen unter Entwicklern. Welches ist also besser für die API-Entwicklung geeignet? In diesem Artikel werden diese beiden Frameworks verglichen und einige Schlussfolgerungen gezogen. 1. Grundlegende Einführung Yii2 und Symfony sind ausgereifte PHP-Frameworks mit entsprechenden Erweiterungen, die zur Entwicklung verwendet werden können

PHP-Entwicklung: Verwenden Sie Yii2 und GrapeJS, um Back-End-CMS und visuelle Front-End-Bearbeitung zu implementieren PHP-Entwicklung: Verwenden Sie Yii2 und GrapeJS, um Back-End-CMS und visuelle Front-End-Bearbeitung zu implementieren Jun 15, 2023 pm 11:48 PM

In der modernen Softwareentwicklung ist der Aufbau eines leistungsstarken Content Management Systems (CMS) keine leichte Aufgabe. Entwickler müssen nicht nur über umfangreiche Fähigkeiten und Erfahrung verfügen, sondern auch die fortschrittlichsten Technologien und Tools nutzen, um ihre Funktionalität und Leistung zu optimieren. In diesem Artikel wird erläutert, wie Sie Yii2 und GrapeJS, zwei beliebte Open-Source-Software, zur Implementierung von Back-End-CMS und visueller Front-End-Bearbeitung verwenden. Yii2 ist ein beliebtes PHPWeb-Framework, das umfangreiche Tools und Komponenten für die schnelle Erstellung bereitstellt

See all articles