همانطور که می دانید از نسخه ۵.۲ به بعد قابلیتی بنام gaurd را به لاراول افزوده شده است. در نسخه های قبلی سیستم احراز هویت لاراول با استفاده از درخواست هایی که با استفاده از متد پست به کنترلر مورد نظر ارسال می شد بررسی و در صورت احراز هویت برای کاربر سشن ایجاد می شد و در غیر اینصورت برگشت داده میشد. در نسخه های قبل از ۵.۲ برای ایجاد یک API کار بسیار مشکل بود و شما باید چندین درایور ایجاد می کردید. اما از نسخه ۵.۲ به بعد لاراول کار را بسیار برای ما ساده کرده است و ما می توانیم با استفاده از گارد Gurad درایور درایور های متفاوتی را برای استفاده ایجاد نماییم.
شما می توانید برای مشاهده guard ها به فایل config/auth.php بروید.
اما Guard چیست؟
Guard (نگهبان) یک روش برای شناسی کاربران تایید شده می باشد که از لاراول ۵.۲ به بعد به این فریم وورک افزوده شده است.
لاراول گاردهای متفاوتی همچون کوکی ها و سشن ها فراهم می کند. Guard سشن وضعیت کاربر را در هر درخواست درون کوکی ها نگه می دارد و این یک گارد token با استفاده از یک توکن وضعیت کاربر را در هر درخواست بررسی می کند
بصورت معمول Providers مسیولیت بازیابی اطلاعات در اپلیکیشن را برعهده دارد.
اگر یک گارد نیاز به احراز هویت یک کاربر داشت. این عمل به authentication provider خواهد رفت. سپس با توجه به provider ی که مشخص شده است کار احراز هویت کاربر انجام خواهد شد.
آموزش ایجاد Multiple Authentication در لاراول
لاراول خود را ایجاد و به دیتابیس متصل کرده و سپس دستوات زیر را در خط فرمان اجرا نمایید:
php artisan make:auth
سپس:
php artisan migrate
حال با استفاده از دستور زیر مدل و مایگریشن مربوط به admin خود را بسازید:
php artisan make:model Models/Admins -m
دستور بالا فایل مایگریت و مدل Admins را در پوشه ی Models ایجاد خواهد کرد. حال به پوشه ی Models رفته و کدهای زیر را جایگزین کدهای درون فایل Admins.php کنید:
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admins extends Authenticatable
{
protected $guard = 'admin';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'firstname', 'midname', 'lastname', 'email', 'address', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
در ادامه به دایرکتوری database و سپس به ادرس migrations\_create_admins_table.php رفته و کدهای درون آن را با کدهای زیر جایگزین کنید:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAdminsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->string('firstname');
$table->string('midname');
$table->string('lastname');
$table->string('email')->unique();
$table->string('address')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('admins');
}
حالا دستور php artisan migrate را در خط فرمان اجرا نمایید.
اکنون به فایل config/auth.php بروید تا تنظیمات مربوط به گارد admins را انجام دهیم.
آرایه gaurds و providers درون این فایل را بصورت زیر تغییر دهید:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
],
ما در اینجا یک گارد admin-api نیز تعریف کرده ایم که درایور آن توکن می باشد همچنین یک گارد admin داریم که از درایو توکن استفاده می کند. که سرویس دهنده یا provider این دو admins نام دارد. سپس در بخش مربوط به providers، سرویس مربوط به admins و users را معرفی کردیم.
D- ایجاد فایل کنترلر لاگین ادمین:
برای ایجاد یک فایل login برای admin دستور زیر را در خط فرمان بنویسید:
php artisan make:controller Auth/AdminLoginController
دستور بالا یک فایل بنام AdminLoginController.php در پوشه ی Auth ایجاد خواهد کرد. این فایل را باز کنید و کدهای آن را با کدهای زیر جایگزین کنید:
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use Route;
class AdminLoginController extends Controller
{
public function __construct()
{
$this->middleware('guest:admin', ['except' => ['logout']]);
}
public function showLoginForm()
{
return view('auth.admin_login');
}
public function login(Request $request)
{
// Validate the form data
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
// Attempt to log the user in
if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
// if successful, then redirect to their intended location
return redirect()->intended(route('admin.dashboard'));
}
// if unsuccessful, then redirect back to the login with the form data
return redirect()->back()->withInput($request->only('email', 'remember'));
}
public function logout()
{
Auth::guard('admin')->logout();
return redirect('/admin');
}
}
حال با دستور زیر فایل AdminController را ایجاد میکنیم:
php artisan make:controller AdminController
فایل AdminController.php را باز و کدهای آن را با کدهای زیر جایگزین کنید:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AdminController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:admin');
}
/**
* show dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('admin');
}
}
حال فایل روت پروژه خود را باز کنید و دستورات زیر را جایگزین کنید:
Route::prefix('admin')->group(function() {
Route::get('/login',
'Auth\AdminLoginController@showLoginForm')->name('admin.login');
Route::post('/login', 'Auth\AdminLoginController@login')->name('admin.login.submit');
Route::get('logout/', 'Auth\AdminLoginController@logout')->name('admin.logout');
Route::get('/', 'AdminController@index')->name('admin.dashboard');
});
در نهایت می توانید با دستورات زیر به هرکدام از روت های admin یا user دسترسی داشته باشید:
Admin Login URL: http://localhost/admin/login
User Login URL: http://localhost/login
توجه: برای نمایش فرم لاگین admin باید همانطور که در مرحله D معرفی کرده ایم یک فایل بنام admin_login در پوشه ی auth ایجاد نمایید.
درصورتی که سوالی دارید از بخش نظرات برای ما ارسال نمایید.
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *
هنوز برای این مطلب نظری ارسال نشده است!