Heim > php教程 > PHP开发 > Detaillierte Erläuterung der Schritte zum Aufbau eines Backend-Anmeldesystems in Laravel

Detaillierte Erläuterung der Schritte zum Aufbau eines Backend-Anmeldesystems in Laravel

高洛峰
Freigeben: 2016-12-23 17:14:48
Original
1524 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt, wie man ein Backend-Anmeldesystem in Laravel erstellt. Ich teile es Ihnen als Referenz mit:

Heute möchte ich ein Backend-System erstellen. Es gibt Benutzer, die sich beim System anmelden Beim Ausprobieren habe ich das Gefühl, dass sich Laravel-Benutzer anmelden können. Es ist wirklich glücklich. 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 diese leicht mit einigen Standardeinstellungen von Laravel verwechselt werden könnte.

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ß die Migration von Laravel, um das zu erstellen Tabelle (eigentlich müssen Sie dieses Tool nicht verwenden, um die Tabelle zu erstellen)

1 Installieren Sie das grundlegendste Laravel-Framework

2 Erstellen Sie eine Migrationsdatei:

./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 Inhalt hinzufügen nach oben und unten;

<?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(&#39;badmin&#39;, function($table)
     {
       $table->increments(&#39;id&#39;);
        $table->string(&#39;nickname&#39;, 100)->unique();
        $table->string(&#39;username&#39;, 100)->unique();
        $table->string(&#39;email&#39;, 100)->unique();
        $table->string(&#39;password&#39;, 64);
        $table->timestamps();
     });
   }
   /**
   * Reverse the migrations.
   *
   * @return void
   */
   public function down()
   {
     Schema::drop(&#39;badmin&#39;);
   }
}
Nach dem Login kopieren

5 Konfigurieren Sie die lokale Datenbank, app/config /local/database.php

<?php
return array(
  &#39;fetch&#39; => PDO::FETCH_CLASS,
  &#39;default&#39; => &#39;mysql&#39;,
  &#39;connections&#39; => array(
    &#39;mysql&#39; => array(
      &#39;driver&#39;  => &#39;mysql&#39;,
      &#39;host&#39;   => &#39;localhost&#39;,
      &#39;database&#39; => &#39;test&#39;,
      &#39;username&#39; => &#39;yejianfeng&#39;,
      &#39;password&#39; => &#39;123456&#39;,
      &#39;charset&#39;  => &#39;utf8&#39;,
      &#39;collation&#39; => &#39;utf8_unicode_ci&#39;,
      &#39;prefix&#39;  => &#39;&#39;,
    ),
  ),
  &#39;migrations&#39; => &#39;migrations&#39;,
);
Nach dem Login kopieren

6 Datentabelle erstellen:

./artisan migrate --env=local

Zu diesem Zeitpunkt ging ich zur Datenbank und fand das Es gab eine zusätzliche Badadmin-Tabelle. 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 &#39;0000-00-00 00:00:00&#39;,
 `updated_at` timestamp NOT NULL DEFAULT &#39;0000-00-00 00:00:00&#39;,
 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;
Nach dem Login kopieren

create_at und update_at, dies sind Felder, die von Laravel standardmäßig für jede Tabelle erstellt werden, und diese beiden Felder können bei Verwendung von Eloquent automatisch aktualisiert werden um Hinzufügungen, Löschungen, Änderungen und Abfragen durchzuführen

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 = &#39;badmin&#39;;
   protected $hidden = array(&#39;password&#39;);
   public static $rules = [
     &#39;nickname&#39; => &#39;required|alpha_num|min:2&#39;,
     &#39;username&#39; => &#39;required&#39;,
     &#39;email&#39;=>&#39;required|email|unique:badmin&#39;,
     &#39;password&#39;=>&#39;required|alpha_num|between:6,12|confirmed&#39;,
   ];
}
Nach dem Login kopieren

Hier müssen Sie UserInterface und RemindableInterface implementieren

8 Verknüpfen Sie das Modell mit Auth und ändern Sie app/config/auth.php

<?php
return array(
   // 默认的用户验证驱动
   // 可以是database或者eloquent
   &#39;driver&#39; => &#39;eloquent&#39;,
   // 只有驱动为eloquent的时候才有用
   &#39;model&#39; => &#39;Badmin&#39;,
);
Nach dem Login kopieren

Der Treiber kann hier eloquent oder datenbankbasiert sein eloquent teilt der Auth-Komponente mit, dass die Benutzerauthentifizierungsklasse von der Badmin-Klasse verwaltet wird. Das Modell hier hat einen Namespace, das heißt, wenn Ihre Admin-Klasse YejianfengBadmin ist, sollte sie in „YejianfengBadmin“ geändert werden

9 Okay, zu diesem Zeitpunkt wurde der Logikteil tatsächlich erstellt, und Sie kann bereits

Auth::attempt(XXX) im Controller verwenden, um eine Berechtigungsauthentifizierung durchzuführen

Auth::user(), um den angemeldeten Benutzer (eine Badmin-Klasse) zu erhalten

und so weiter.

10 Als nächstes erstellen Sie eine Benutzeranmeldeseite:


11 Routing festlegen:

Detaillierte Erläuterung der Schritte zum Aufbau eines Backend-Anmeldesystems in Laravel

<?php
// 不需要登录验证的接口
Route::get(&#39;/&#39;, [&#39;as&#39; => &#39;user.login&#39;,&#39;uses&#39;=>&#39;UserController@getLogin&#39;]);
Route::get(&#39;user/login&#39;, [&#39;as&#39; => &#39;login&#39;, &#39;uses&#39; => &#39;UserController@getLogin&#39;]);
Route::post(&#39;user/login&#39;, [&#39;as&#39; => &#39;login&#39;, &#39;uses&#39; => &#39;UserController@postLogin&#39;]);
// 需要登录验证才能操作的接口
Route::group(array(&#39;before&#39; => &#39;auth&#39;), function()
{
  Route::get(&#39;user/logout&#39;, [&#39;as&#39; => &#39;logout&#39;, &#39;uses&#39; => &#39;UserController@getLogout&#39;]);
  Route::get(&#39;user/dashboard&#39;, [&#39;as&#39; => &#39;dashboard&#39;, &#39;uses&#39; => &#39;UserController@getDashboard&#39;]);
});
Nach dem Login kopieren

12 Controller einstellen:

<?php
class UserController extends BaseController {
   // 登录页面
   public function getLogin()
   {
     return View::make(&#39;user.login&#39;);
   }
   // 登录操作
   public function postLogin()
   {
     if (Auth::attempt(array(&#39;email&#39;=>Input::get(&#39;email&#39;), &#39;password&#39;=>Input::get(&#39;password&#39;)))) {
       return Redirect::to(&#39;user/dashboard&#39;)
       ->with(&#39;message&#39;, &#39;成功登录&#39;);
     } else {
       return Redirect::to(&#39;user/login&#39;)
          ->with(&#39;message&#39;, &#39;用户名密码不正确&#39;)
          ->withInput();
     }
   }
   // 登出
   public function getLogout()
   {
     Auth::logout();
     return Redirect::to(&#39;user/login&#39;);
   }
   public function getDashboard()
   {
     return View::make(&#39;user.dashboard&#39;);
   }
   // 添加新用户操作
   public function getCreate()
   {
     return View::make(&#39;user.create&#39;);
   }
   // 添加新用户操作
   public function postCreate()
   {
     $validator = Validator::make(Input::all(), User::$rules);
     if ($validator->passes()){
        $bAdmin = new Badmin();
        $bAdmin->nickname = Input::get(&#39;nickname&#39;);
        $bAdmin->username = Input::get(&#39;username&#39;);
        $bAdmin->email = Input::get(&#39;email&#39;);
        $user->password = Hash::make(Input::get(&#39;password&#39;));
        $user->save();
        Response::json(null);
     } else {
        Response::json([&#39;message&#39; => &#39;注册失败&#39;], 410);
     }
   }
}
Nach dem Login kopieren

13 Filter einstellen, app/filter.php

Route::filter(&#39;auth&#39;, function()
{
   if (Auth::guest())
   {
     if (Request::ajax())
     {
        return Response::make(&#39;Unauthorized&#39;, 401);
     }
     else
     {
        return Redirect::guest(&#39;/&#39;);
     }
   }
});
Nach dem Login kopieren

Ändern Sie die Adresse nach einem Authentifizierungsfehler in / path

14 Ansichten/user/login.blade.php festlegen

Wie Sie sehen können, können Sie hier Verwenden Sie direkt Session::has und Session::get

und dann sind Sie im Grunde fertig...

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem Laravel-Framework hilfreich sein wird.

Ausführlichere Informationen zu den Schritten zum Aufbau eines Backend-Anmeldesystems mit Laravel finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage