L'exemple de cet article décrit comment créer un système de connexion backend dans Laravel. Je le partage avec vous pour votre référence. Les détails sont les suivants :
Aujourd'hui, je souhaite utiliser Laravel pour créer un système backend. J'ai besoin du plus simple. Il y a des utilisateurs qui se connectent au système. en l'essayant, j'ai l'impression que les utilisateurs de Laravel peuvent se connecter. C'est vraiment content. Bien entendu, le principe est que le système de gestion des utilisateurs que vous souhaitez est le plus simple, c'est-à-dire qu'il vous suffit de pouvoir vous connecter sans autorisations utilisateur.
Je n'utiliserai pas ici la table des utilisateurs par défaut comme exemple, car elle serait facile à confondre avec certains des paramètres par défaut de Laravel.
Tout d'abord, confirmez que la table user en arrière-plan s'appelle badin. Chaque administrateur a un nom d'utilisateur, un pseudo, un email et un mot de passe
Pour vous amuser ici, utilisez la migration de Laravel pour créer le. table (en fait, vous n'avez pas besoin d'utiliser cet outil pour créer la table)
1 Installez le framework Laravel le plus basique
2 Créez un fichier de migration :
./artisan migrate:make create-badmin-table
3 Trouvé un fichier php supplémentaire sous app/database/migration/ :
2014_10_19_090336_create-badmin -table.php
4 Ajouter du contenu vers le haut et vers le bas ;
<?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 Configurez la base de données locale, 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 Créer une table de données :
./artisan migrate --env=local
À ce moment-là, je suis allé dans la base de données et j'ai trouvé que il y avait une table badadmin supplémentaire. La structure des données est la suivante :
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;
create_at et update_at, ce sont des champs créés par laravel par défaut pour chaque table, et ces deux champs peuvent être automatiquement mis à jour lors de l'utilisation d'Eloquent. pour effectuer des ajouts, des suppressions, des modifications et des requêtes
7 Créer un modèle :
<?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', ]; }
Ici, vous devez implémenter UserInterface et RemindableInterface
8 Associez le modèle à Auth et modifiez app/config/auth.php
<?php return array( // 默认的用户验证驱动 // 可以是database或者eloquent 'driver' => 'eloquent', // 只有驱动为eloquent的时候才有用 'model' => 'Badmin', );
Le pilote ici peut être éloquent ou utilisant une base de données. eloquent indique au composant Auth que la classe d'authentification utilisateur est gérée par la classe Badmin. Le modèle ici a un espace de noms, c'est-à-dire que si votre classe d'administrateur est YejianfengBadmin, elle devrait être remplacée par 'YejianfengBadmin'
9 D'accord, à ce stade, la partie logique a en fait été construite, et vous peut déjà utiliser
Auth::attempt(XXX) dans le contrôleur pour l'authentification des autorisations
Auth::user() pour obtenir l'utilisateur connecté (une classe Badmin)
et bientôt. 10 Ensuite, créez une page de connexion utilisateur :<?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 Définir le contrôleur :
<?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 Définir le filtre, app/filter.php
Route::filter('auth', function() { if (Auth::guest()) { if (Request::ajax()) { return Response::make('Unauthorized', 401); } else { return Redirect::guest('/'); } } });
Modifiez l'adresse après l'échec de l'authentification en /path
14 Définir vues/user/login.blade.php
Comme vous pouvez le voir, ici Vous pouvez utilisez directement Session::has et Session::get
et vous avez pratiquement terminé...
J'espère que cet article sera utile à la conception de programmes PHP de chacun basé sur le framework Laravel.
Pour des informations plus détaillées sur les étapes à suivre pour créer un système de connexion backend avec Laravel, veuillez faire attention au site Web PHP chinois !