2017-09-30 1 views
-1

Je suis en train d'écrire une API de repos pour une application mobile. Je ne sais pas comment authentifier les utilisateurs et les administrateurs dans mon application. Je une table nommée "utilisateurs" et ont un champ appelé "isAdmin" qui est ou . maintenant quand admin envoie des messages, les utilisateurs peuvent voir posts.how recommandez-vous auth pour les deux de ces? merciAuthentification et gestion des utilisateurs dans larvar repos api

Répondre

1

Je vous recommande de lire la documentation sur l'authentification sur Laravel: https://laravel.com/docs/5.5/authentication

Ce que vous devez configurer est la suivante:

  • Middleware (quelles routes peuvent l'utilisation de l'utilisateur et ce l'administrateur peut utiliser les routes)
  • Éditez votre modèle avec une fonction isAdmin() pour déterminer si un utilisateur est un utilisateur ou un administrateur

Exemple d'un fichier AdminMiddleware- créer par la ligne de commande: artisan php make: middleware AdminMiddleware

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Auth; 

class AdminMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if(Auth::check() && Auth::user()->isAdmin()){ 
      return $next($request); 
     } 
     else{ 
      return view('your_view')->withErrors('You are not logged in'); 
     } 
    } 
} 

Exemple d'un modèle utilisateur fonction isAdmin- créer par ligne de commande: php artisan marque: modèle Utilisateur

public function isAdmin(){ 
    if($this->isAdmin == 1){ 
     return true; 
    } else { 
     return false; 
    } 
} 

Exemple de votre fichier d'itinéraire

// @TODO: Set routes for user and admin here... 

Route::group(['middleware' => ['admin']], function() { 
    // @TODO: Set admin routes here, only admin can use this routes. 
}); 

Vous devez également modifier votre Kernel.php un peu:

protected $routeMiddleware = [ 
    // ... add this line 
    'admin' => \App\Http\Middleware\AdminMiddleware::class, 
]; 
+0

je vous remercie much.how recommandez-vous? une table avec isAdmin ou deux tables ??? –

+0

@Steve Je recommande d'utiliser la table User (s) avec une colonne isAdmin. Si vous décidez ultérieurement d'ajouter plusieurs types d'utilisateurs, faites une colonne enum et modifiez la fonction isAdmin pour satisfaire à cette exigence. Sinon, vous finirez par créer une nouvelle table pour un nouveau type d'utilisateur, ce n'est pas recommandé. –