Setelah banyak menggali dan banyak pertanyaan & jawaban akhirnya saya berhasil bekerja Laravel 5.2 Multi Auth dengan dua tabel, Jadi saya menulis Jawaban atas Pertanyaan saya sendiri.
Bagaimana cara mengimplementasikan Multi Auth di Larvel 5.2
Seperti yang disebutkan di atas. Dua meja admin
danusers
Laravel 5.2 memiliki artisan
perintah baru .
php artisan make:auth
itu akan menghasilkan login dasar / daftar route
, view
dan controller
untuk user
tabel.
Jadikan admin
tabel sebagai users
tabel untuk kesederhanaan.
Kontroler Untuk Admin
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(catatan: Saya baru saja menyalin file-file ini dari app/Http/Controllers/Auth/AuthController
sini)
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
Tambahkan dua metode dan tentukan $redirectTo
dan$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');
}
ini akan membantu Anda untuk membuka formulir login lain untuk admin
membuat middleware untuk 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);
}
}
daftar middleware di kernel.php
protected $routeMiddleware = [
'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
];
gunakan middleware ini di AdminController
misalnya,
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');
}
}
Itu semua diperlukan untuk membuatnya bekerja dan juga untuk mendapatkan json penggunaan admin terotentikasi
Auth::guard('admin')->user()
Sunting - 1
Kami dapat mengakses pengguna terotentikasi secara langsung menggunakan
Auth::user()
tetapi jika Anda memiliki dua tabel otentikasi maka Anda harus menggunakan
Auth::guard('guard_name')->user()
untuk keluar
Auth::guard('guard_name')->user()->logout()
untuk pengguna json terotentikasi
Auth::guard('guard_name')->user()
Edit 2
Sekarang Anda dapat mengunduh Laravel 5.2 Project diimplementasikan Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
protected $guard = 'guard_name'
dapat digunakan sekarang.