खोज…
बहु प्रमाणीकरण
लारवेल आपको विशिष्ट गार्ड के साथ कई प्रमाणीकरण प्रकारों का उपयोग करने की अनुमति देता है।
लारवेल में 5.3 एकाधिक प्रमाणीकरण लारवेल 5.2 से थोड़ा अलग है
मैं समझाऊंगा कि 5.3 में बहुउद्देशीय सुविधा को कैसे लागू किया जाए
सबसे पहले आपको दो अलग-अलग उपयोगकर्ता मॉडल की आवश्यकता है
cp App/User.php App/Admin.php
यदि आप विभिन्न मॉडल का उपयोग करते हैं तो क्लास नाम को व्यवस्थापक में सेट करें और नाम स्थान सेट करें। यह दिखना चाहिए
अनुप्रयोग \ Admin.php
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class Admin extends Authenticatable
{
use Notifiable;
protected $fillable = ['name', 'email', 'password'];
protected $hidden = ['password', 'remember_token'];
}
इसके अलावा, आपको व्यवस्थापन के लिए एक माइग्रेशन बनाने की आवश्यकता है
php artisan make:migration create_admins_table
फिर डिफ़ॉल्ट उपयोगकर्ता माइग्रेशन की सामग्री के साथ माइग्रेशन फ़ाइल संपादित करें। इस तरह दिखता है
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateAdminsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('admins');
}
}
कॉन्फ़िगर / संपादित करें
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
//Add Admin Guard
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
तथा
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
//Add Admins Provider
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
ध्यान दें कि हम दो प्रविष्टि जोड़ते हैं। गार्ड में एक प्रदाताओं चर में चर एक।
और यह है कि आप दूसरे गार्ड का उपयोग करते हैं तब "वेब"
मेरा App \ Http \ Controllers \ Admin \ LoginController
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller
{
use AuthenticatesUsers;
protected $guard = 'admin';
protected $redirectTo = '/admin/';
public function showLoginForm()
{
return view('admin.login');
}
protected function guard()
{
return Auth::guard($this->guard);
}
}
इसके लिए थोड़ा स्पष्टीकरण चाहिए।
संक्षेप में :: :: गार्ड ('एडमिन') आपको अपने एडमिन गार्ड के साथ कई तरीकों (जैसे लॉगिन, लॉगआउट, रजिस्टर आदि) का उपयोग करने की अनुमति देगा।
उदाहरण के लिए
Auth::guard('admin')->login($user)
प्रवेश तालिका में $ उपयोगकर्ता खोजेंगे और उपयोगकर्ता के साथ लॉगिन करेंगे
Auth::login($user)
सामान्य रूप से उपयोगकर्ता तालिका के साथ काम करेगा। डिफ़ॉल्ट गार्ड चूक सरणी के साथ config / auth.php में निर्दिष्ट है। ताजा लार्वा में यह "वेब" है।
नियंत्रक में आपको अपने कस्टम दृश्य पथ दिखाने के लिए AuthenticatesUsers से विधियों को लागू करना होगा। और आपको अपने नए उपयोगकर्ता गार्ड का उपयोग करने के लिए गार्ड जैसे अन्य कार्यों को लागू करने की आवश्यकता है।
इस उदाहरण में मेरा व्यवस्थापक लॉगिन है व्यवस्थापक / login.blade
और लागू करने के लिए गार्ड () फ़ंक्शन को वापस करने के लिए प्रामाणिक :: गार्ड ('व्यवस्थापक') सभी प्रामाणिक तरीकों का पता लगाने के तरीके "व्यवस्थापक" गार्ड के साथ काम करता है।
लार्वा के पुराने संस्करणों में, यह 5.3 से थोड़ा अलग है
5.2 में getGuard फ़ंक्शन $ गार्ड को वर्ग से रिटर्न देता है और मुख्य फ़ंक्शन (लॉगिन) इसका उपयोग करता है
Auth::guard($guard)->attempt(...)
5.3 में गार्ड फ़ंक्शन पूरे प्रामाणिक :: गार्ड () और मुख्य फ़ंक्शन का उपयोग करता है
$this->guard()->attempt(...)