Saya mencoba masing-masing untuk mengotentikasi pengguna dan admin bentuk user
tabel dan admin
tabel. Saya menggunakan User
model seperti yang disediakan oleh laravel di luar kotak dan menciptakan yang sama karena Admin.
saya telah menambahkan kunci penjaga dan kunci penyedia keauth.php.
Penjaga
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
Penyedia
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
Rute
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');
});
Saya telah membuat direktori bernama AuthAdmin
tempat Laravel's default AuthController.php
dan PasswordController.php
file ada. (Namespace Diubah sesuai)
Pertama-tama, dalam dokumen Laravel disebutkan bahwa cara menentukan penjaga kustom sambil mengautentikasi seperti ini yang tidak berfungsi.
Ada metode lain yang disebutkan dalam dokumen Laravel untuk menggunakan penjaga yang tidak berfungsi juga.
Akan bermanfaat jika seseorang dapat menyelesaikan masalah dan mengoreksi saya jika saya salah.
sumber
protected $guard = 'guard_name'
dapat digunakan sekarang.Jawaban:
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
dancontroller
untukuser
tabel.Jadikan
admin
tabel sebagaiusers
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
route.php
AdminAuth/AuthController.php
Tambahkan dua metode dan tentukan
$redirectTo
dan$guard
ini akan membantu Anda untuk membuka formulir login lain untuk admin
membuat middleware untuk
admin
}
daftar middleware di
kernel.php
gunakan middleware ini di
AdminController
misalnya,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 menggunakanuntuk keluar
untuk pengguna json terotentikasi
Edit 2
Sekarang Anda dapat mengunduh Laravel 5.2 Project diimplementasikan Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
sumber
if (Auth :: guard ($ guard) -> check ()) { return redirect ('/'); }
Setelah perubahan:if (Auth :: guard ('yourcustomguard') -> check () || Auth :: check ()) { return redirect ('/'); }
Dalam hal ini membantu siapa pun, dan ini mungkin hanya karena kurangnya pemahaman saya tentang middleware, inilah yang harus saya lakukan untuk membuat ini berfungsi (selain langkah-langkah yang diambil oleh @imrealashu) ...
Di
route.php
:Ini ada di
web
grup middleware. Sebelum ini saya mencoba meletakkannya diadmin
grup middleware terpisah dan bahkan dalam sebuahauth:admin
grup tetapi ini tidak berhasil, itu hanya bekerja untuk saya ketika saya menetapkan middleware sebagai admin pada rute itu sendiri. Saya tidak tahu mengapa ini tapi saya berharap itu menyelamatkan orang lain dari mencabut rambut mereka seperti yang saya lakukan.sumber
Route::group(['middleware' => ['admin']], function () { //Admin Routes... });
alasan itu tidak berfungsi untuk sayaSangat mudah di laravel 5.6. Cukup buka
config/auth.php
dan tambahkan baris ini dalamproviders
array:Perhatikan bahwa kami tidak menggunakan
database
drivereloquent
.Sekarang tambahkan ini ke
guards
array:Sekarang kita sudah selesai! Gunakan ini ketika bekerja dengan tabel admin:
Bersulang.
sumber