Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der Schritte zum Aufbau eines Backend-Anmeldesystems im Laravel_php-Beispiel
Das Beispiel in diesem Artikel beschreibt, wie man ein Backend-Anmeldesystem in Laravel erstellt. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Heute möchte ich Laravel verwenden, um ein Back-End-System zu erstellen, das es Benutzern ermöglicht, sich beim System anzumelden. Nach dem Ausprobieren bin ich der Meinung, dass die Benutzeranmeldung von Laravel wirklich zufrieden ist. Voraussetzung ist natürlich, dass das von Ihnen gewünschte Benutzerverwaltungssystem das einfachste ist, d. h. Sie müssen sich nur ohne Benutzerberechtigung anmelden können.
Ich werde hier nicht die Standardbenutzertabelle als Beispiel verwenden, da es leicht zu Verwechslungen mit einigen Standardeinstellungen von Laravel kommen kann.
Bestätigen Sie zunächst, dass die Benutzertabelle im Hintergrund badin heißt. Jeder Administrator hat einen Benutzernamen, einen Spitznamen, eine E-Mail-Adresse und ein Passwort
Verwenden Sie zum Spaß hier die Migration von Laravel, um die Tabelle zu erstellen (eigentlich müssen Sie dieses Tool nicht verwenden, um die Tabelle zu erstellen)
1 Installieren Sie das grundlegendste Laravel-Framework
2 Migrationsdatei erstellen:
./artisan migrate:make create-badmin-table
3 Eine zusätzliche PHP-Datei unter app/database/migration/ gefunden:
2014_10_19_090336_create-badmin-table.php
4 Inhalte nach oben und unten hinzufügen
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateBadminTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('badmin', function($table) { $table->increments('id'); $table->string('nickname', 100)->unique(); $table->string('username', 100)->unique(); $table->string('email', 100)->unique(); $table->string('password', 64); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('badmin'); } }
5 Konfigurieren Sie die lokale Datenbank, app/config/local/database.php
<?php return array( 'fetch' => PDO::FETCH_CLASS, 'default' => 'mysql', 'connections' => array( 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'test', 'username' => 'yejianfeng', 'password' => '123456', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), ), 'migrations' => 'migrations', );
6 Datentabelle erstellen:
./artisan migrate --env=local
Zu diesem Zeitpunkt ging ich zur Datenbank und stellte fest, dass es eine zusätzliche Badminton-Tabelle gab. Die Datenstruktur ist wie folgt:
CREATE TABLE `badmin` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `nickname` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `username` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `password` varchar(64) COLLATE utf8_unicode_ci NOT NULL, `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), UNIQUE KEY `badmin_nickname_unique` (`nickname`), UNIQUE KEY `badmin_username_unique` (`username`), UNIQUE KEY `badmin_email_unique` (`email`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Ich möchte fragen, warum hier create_at und update_at hinzugefügt werden. Dies sind die Felder, die Laravel standardmäßig für jede Tabelle erstellt, und diese beiden Felder können automatisch aktualisiert werden, wenn Eloquent zum Durchführen von Hinzufügungen, Löschungen, Änderungen und Abfragen verwendet wird
7 Erstellen Sie ein Modell:
<?php use Illuminate\Auth\UserTrait; use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableTrait; use Illuminate\Auth\Reminders\RemindableInterface; class Badmin extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; protected $table = 'badmin'; protected $hidden = array('password'); public static $rules = [ 'nickname' => 'required|alpha_num|min:2', 'username' => 'required', 'email'=>'required|email|unique:badmin', 'password'=>'required|alpha_num|between:6,12|confirmed', ]; }
Implementierungen von UserInterface und RemindableInterface sind hier erforderlich
8 Verknüpfen Sie das Modell mit Auth und ändern Sie app/config/auth.php
<?php return array( // 默认的用户验证驱动 // 可以是database或者eloquent 'driver' => 'eloquent', // 只有驱动为eloquent的时候才有用 'model' => 'Badmin', );
Der Treiber hier kann eloquent oder eine Datenbank sein. Durch die Verwendung von eloquent wird der Auth-Komponente mitgeteilt, dass die Benutzerauthentifizierungsklasse von der Badmin-Klasse verwaltet wird. Das Modell hier hat einen Namensraum, das heißt, wenn Ihre Admin-Klasse YejianfengBadmin ist, sollte sie in „YejianfengBadmin“ geändert werden
9 Okay, zu diesem Zeitpunkt ist der Logikteil tatsächlich erstellt und Sie können ihn bereits im Controller verwenden
Auth::attempt(XXX) führt die Berechtigungsauthentifizierung durch
Auth::user() ruft den angemeldeten Benutzer ab (eine Badminton-Klasse)
Warten.
10 Als nächstes erstellen Sie eine Benutzeranmeldeseite:
11 Routing festlegen:
<?php // 不需要登录验证的接口 Route::get('/', ['as' => 'user.login','uses'=>'UserController@getLogin']); Route::get('user/login', ['as' => 'login', 'uses' => 'UserController@getLogin']); Route::post('user/login', ['as' => 'login', 'uses' => 'UserController@postLogin']); // 需要登录验证才能操作的接口 Route::group(array('before' => 'auth'), function() { Route::get('user/logout', ['as' => 'logout', 'uses' => 'UserController@getLogout']); Route::get('user/dashboard', ['as' => 'dashboard', 'uses' => 'UserController@getDashboard']); });
12 Controller einstellen:
<?php class UserController extends BaseController { // 登录页面 public function getLogin() { return View::make('user.login'); } // 登录操作 public function postLogin() { if (Auth::attempt(array('email'=>Input::get('email'), 'password'=>Input::get('password')))) { return Redirect::to('user/dashboard') ->with('message', '成功登录'); } else { return Redirect::to('user/login') ->with('message', '用户名密码不正确') ->withInput(); } } // 登出 public function getLogout() { Auth::logout(); return Redirect::to('user/login'); } public function getDashboard() { return View::make('user.dashboard'); } // 添加新用户操作 public function getCreate() { return View::make('user.create'); } // 添加新用户操作 public function postCreate() { $validator = Validator::make(Input::all(), User::$rules); if ($validator->passes()){ $bAdmin = new Badmin(); $bAdmin->nickname = Input::get('nickname'); $bAdmin->username = Input::get('username'); $bAdmin->email = Input::get('email'); $user->password = Hash::make(Input::get('password')); $user->save(); Response::json(null); } else { Response::json(['message' => '注册失败'], 410); } } }
13 Filter einstellen, app/filter.php
Route::filter('auth', function() { if (Auth::guest()) { if (Request::ajax()) { return Response::make('Unauthorized', 401); } else { return Redirect::guest('/'); } } });
Ändern Sie die Adresse nach einem Authentifizierungsfehler in /path
14 Ansichten/user/login.blade.php festlegen
Hier ist ein Teil:
Wie Sie sehen, können Session::has und Session::get
hier direkt verwendet werdenDann ist es im Prinzip erledigt...
Postskriptum
Der Authentifizierungsmechanismus in Laravel ist immer noch sehr praktisch, aber die Verwendung der Migration fühlt sich immer etwas frustrierend an. Beim Betrieb der Datenbank gibt es immer eine Trennungsschicht, was unangenehm ist.
Die Authentifizierung reicht hier für einige einfache Benutzeranmeldemechanismen aus. Wenn Sie jedoch komplexere Benutzerverwaltungsberechtigungen vornehmen möchten, müssen Sie möglicherweise Komponenten von Drittanbietern wie Sentry (https://cartalyst.com/manual/sentry) verwenden ).
Leser, die an weiteren Informationen über Laravel interessiert sind, können sich die speziellen Themen auf dieser Website ansehen: „Einführung und fortgeschrittenes Tutorial zum Laravel Framework“, „Zusammenfassung des PHP Excellent Development Framework“, „Grundlegendes Tutorial zum Einstieg in Smarty Templates“. ", „Zusammenfassung der Verwendung von PHP-Datum und -Uhrzeit“, „Einführungs-Tutorial zur objektorientierten PHP-Programmierung“, „Zusammenfassung der Verwendung von PHP-Strings (Strings)“, „Einführungs-Tutorial zum PHP-MySQL-Datenbankbetrieb“ und „Zusammenfassung allgemeiner PHP-Datenbankbetriebsfähigkeiten“
Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem Laravel-Framework hilfreich sein wird.