Nach vielem Graben und vielen Fragen und Antworten habe ich es endlich geschafft, Laravel 5.2 Multi Auth mit zwei Tabellen zu bearbeiten. Also schreibe ich die Antwort auf meine eigene Frage.
So implementieren Sie Multi Auth in Larvel 5.2
Wie oben erwähnt. Zwei Tisch admin
undusers
Laravel 5.2 hat einen neuen artisan
Befehl.
php artisan make:auth
wird es grundlegende Login / Register erzeugen route
, view
und controller
für user
Tabelle.
Machen Sie der Einfachheit halber eine admin
Tabelle als users
Tabelle.
Controller für Administratoren
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(Hinweis: Ich habe diese Dateien gerade von app/Http/Controllers/Auth/AuthController
hier kopiert )
config/auth.php
//Authenticating guards
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
//User Providers
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
//Resetting Password
'passwords' => [
'clients' => [
'provider' => 'client',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admin',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
],
route.php
Route::group(['middleware' => ['web']], function () {
//Login Routes...
Route::get('/admin/login','AdminAuth\AuthController@showLoginForm');
Route::post('/admin/login','AdminAuth\AuthController@login');
Route::get('/admin/logout','AdminAuth\AuthController@logout');
// Registration Routes...
Route::get('admin/register', 'AdminAuth\AuthController@showRegistrationForm');
Route::post('admin/register', 'AdminAuth\AuthController@register');
Route::get('/admin', 'AdminController@index');
});
AdminAuth/AuthController.php
Fügen Sie zwei Methoden hinzu und geben Sie $redirectTo
und an$guard
protected $redirectTo = '/admin';
protected $guard = 'admin';
public function showLoginForm()
{
if (view()->exists('auth.authenticate')) {
return view('auth.authenticate');
}
return view('admin.auth.login');
}
public function showRegistrationForm()
{
return view('admin.auth.register');
}
Es wird Ihnen helfen, ein anderes Anmeldeformular für den Administrator zu öffnen
Erstellen einer Middleware für admin
class RedirectIfNotAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = 'admin')
{
if (!Auth::guard($guard)->check()) {
return redirect('/');
}
return $next($request);
}
}}
Middleware registrieren in kernel.php
protected $routeMiddleware = [
'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
];
Verwenden Sie diese Middleware AdminController
z.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class AdminController extends Controller
{
public function __construct(){
$this->middleware('admin');
}
public function index(){
return view('admin.dashboard');
}
}
Das ist alles, was benötigt wird, um es zum Laufen zu bringen und um die Verwendung von authentifizierten Administratoren zu ermöglichen
Auth::guard('admin')->user()
Bearbeiten - 1
Wir können direkt auf authentifizierte Benutzer zugreifen,
Auth::user()
aber wenn Sie zwei Authentifizierungstabellen haben, müssen Sie verwenden
Auth::guard('guard_name')->user()
zum Abmelden
Auth::guard('guard_name')->user()->logout()
für authentifizierten Benutzer json
Auth::guard('guard_name')->user()
Bearbeiten 2
Jetzt können Sie das von Laravel 5.2 Multiauth implementierte Projekt http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/ herunterladen.
protected $guard = 'guard_name'
kann jetzt verwendet werden.