در مورد ساخت گزارش ورود کاربران در لاورال و تصدیق هویت



visibility  
mode_comment   ۰

کار تصدیق هویت کاربر در زبان لاراول به خوبی اجرا می شود. در حقیقت در لاراول همه چیز به صورت آماده شده برای کاربر تنظیم شده است. باید به این نکته توجه داشت که در زمان ساخت جدول مرتبط با آن قسمت رمز را 60 کاراکتر و در قسمت نام کاربری حداقل 100 کاراکتر قرار دهیم.

 تصدیق هویت

تصدیق هویت کاربر

در زبان لاراول 2 نمونه کنترلر به صورت کاملا پیشفرض برای تصدیق هویت کاربر وجود دارد. این 2 کنترلر عبارت اند از : authcontroller  که وظیفه آن وارد شدن کاربر و همچنین عضو کردن کاربر جدید و password controller  که وظیفه آن بازگرداندن رمزی است که کاربران آن را فراموش کرده اند. این کنترلر ها هر کدام دارای یک trait می باشند که از آن برای ایجاد متدهای مورد نیاز خود استفاده می کنند. در اکثر پروژه ها کاربر به هیچ عنوان به این کنترلرها نیاز ندارد که آنها را تغییر دهد. در صورتی که نیاز به تغییر داشته باشند کاربر می تواند فایل های view  را که باعث فراخوانی این کنترلرها می باشد را از پوشه resource / view / auth استفاده کند.

ثبت نام کاربر

با تغییر دادن فایل app / services / registrar می توان قسمت های مهمی را برای ثبت نام کاربران تغییر داد. این کلاس برای ساختن کاربر جدید می باشد. متد validator برای عضو کردن و ورود کاربران جدید استفاده می شود و همچنین متد create وظیفه ثبت اطلاعات کاربران جدید را بر عهده دارد.

 تصدیق هویت

تصدیق هویت کاربران به روش دستی

کد زیر برای تصدیق هویت کاربر می باشد که به صورت دستی خود کاربر باید انجام دهد زیرا تصمیم به استفاده نکردن از authcontroller دارند.

    <?php namespace App\Http\Controllers;

    use Auth;

    use Illuminate\Routing\Controller;

    class AuthController extends Controller {

        /**

         * Handle an authentication attempt.

         *

         * [@return](/@return) Response

         */

        public function authenticate()

        {

            if (Auth::attempt(['email' => $email, 'password' => $password]))

            {

                return redirect()->intended('dashboard');

            }

        }

    }

متد attempt یک آرایه ترکیبی از key و value در آرگومان اول خود دریافت می کند . مقدار password  رمزنگاری (Hash) خواهد شد . مقادیر دیگر در آرایه برای پیدا کردن کاربر از درون بانک اطلاعاتی استفاده می شود . بنابراین در مثال بالا ، کاربر از طریق مقدار ایمیل جستجو می شود و در صورتی که کاربر پیدا شد ، رمز Hash ذخیره شده در دیتابیس با مقدار Hash شده از ورودی آرایه مقایسه می شود. اگر هر دو با یکدیگر یکسان باشند ، یک session جدید برای کاربر مورد نظر ایجاد می شود .

متد attempt در صورتی که عملیات تصدیق هویت کاربر با موفقیت انجام شود مقدار true و در غیر این صورت مقدار false را برمیگرداندتابع Redirect به روش intended کاربر را به همان صفحه ای که قبلا درخواست کرده بود ولی به دلیل عدم تعیین هویت متوقف شده بوده است ، ریدایرکت می کند. می توانید یک پارامتر URL به این متد به عنوان پیش فرض بدهید.

 تصدیق هویت

تصدیق هویت کاربر و به خاطر سپردن آنها

اگر کاربر بخواهد قابلیت تصدیق هویت و بخاطر سپاری ( remember me) را در وب سایت خود درست کند ، یک مقدار boolean  به عنوان پارامتر دوم متد attempt  ارسال نماید . زیرا سبب می شود که کاربران به صورت نامحدود و تا زمانی که خود او Logout  نکرده است، در سیستم لاگین باقی بماند . باید توجه داشت که برای این منظور جدول users  حتما باید دارای فیلد remember_token  باشد که برای ذخیره سازی مقدار توکن remember me  استفاده می شود.

    if (Auth::attempt(['email' => $email, 'password' = $password], $remember))

    {

        // The user is being remembered...

    }

اگر میخواهید بدانید که کاربران از چه روشی تصدیق هویت شده اند ، از متد viaRemember  استفاده نمایید :

    if (Auth::viaRemember())

    {

    }

رویدادهای مربوط به تصدیق هویت

زمانی که متد attempt  فراخوانی می شود ، یک رویداد auth.attempt نیز در کنار آن اجرا می شود . و اگر عملیات تصدیق هویت کاربر با موفقیت انجام شود و کاربر به سیستم لاگین شود رویداد auth.login  اجرا می شود .

دریافت مشخصات کاربر تصدیق شده

زمانی که کاربر به سیستم لاگین شد ، برای بدست آوردن کلاس نمونه کاربر لاگین شده چندین راه وجود دارد . روش اول این است که شما می توانید به اطلاعات کاربر لاگین شده از طریق فاساد Auth  عمل کنید :

متخصص وردپرس
دوست داری از طریق برنامه نویسی کسب درآمد کنی؟ اگر می خوای با برنامه نویسی وب و موبایل کسب درآمد کنی، جایی استخدام شی و یا حتی اینکه درامد ارزی داشته باشی، حتما دوره های متخصص سون لرن رو یه نگاه بنداز : متخصص شو arrow_back

    <?php namespace App\Http\Controllers;

    use Auth;

    use Illuminate\Routing\Controller;

    class ProfileController extends Controller {

        /**

         * Update the user's profile.

         *

         * [@return](/@return) Response

         */

        public function update Profile()

        {

            if (Auth::user())

            {

                // Auth::user() returns an instance of the authenticated user...

            }

        }

    }

روش دوم استفاده از Illuminate\Http\Request:

    <?php namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    use Illuminate\Routing\Controller;

    class ProfileController extends Controller {

        /**

         * Update the user's profile.

         *

         * [@return](/@return) Response

         */

        public function update Profile(Request $request)

        {

            if ($request->user())

            {

                // $request->user() returns an instance of the authenticated user...

            }

        }

    }

روش سوم , استفاده از type-hint برای دسترسی به Illuminate\Contracts\Auth\Authenticatable.این type-hint به constructor کنترلر یا به متد آن یا constructor هر کلاس دیگری که توسط service container  قابل دسترس باشد ، اضافه می شود :

    <?php namespace App\Http\Controllers;

    use Illuminate\Routing\Controller;

    use Illuminate\Contracts\Auth\Authenticatable;

    class ProfileController extends Controller {

        /**

         * Update the user's profile.

         *

         * [@return](/@return) Response

         */

        public function update Profile(Authentica table $user)

        {

            // $user is an instance of the authenticated user...

        }

    }

 تصدیق هویت

حفاظت از Route ها

استفاده از Route middleware این امکان را می دهد که بتوانیم دسترسی کاربر را به برخی از Route ها محدود کنیم ، لاراول به طور پیش فرض برای شما یک Middleware با نام Auth فراهم کرده است که در فایل app\Http\Middleware\Authenticate.php تعریف شده است . تنها کاری که باید بکنید این است که آن را به Route مورد نظر نسبت دهید :

    // With A Route Closure...

    Route::get('profile', ['middleware' => 'auth', function()

    {

        // Only authenticated users may enter...

    }]);

    // With A Controller...

    Route::get('profile', ['middleware' => 'auth', 'uses' => 'ProfileController@show']);

تصدیق هویت از طریق رسانه های اجتماعی

علاوه بر روش معمول تصدیق هویت توسط ورودی کاربر لاراول یک روش آسان نیز برای تصدیق هویت کاربر از طریق رسانه های اجتماعی وجود دارد . برای این منظور لاراول پکیج Laravel Socialite بوسیله سرویس OAuth را فراهم کرده است . .

برای شروع کار با Socialite , پکیج زیر را در فایل composer.json اضافه کنید :

    "laravel/socialite": "~2.0"

سپس , مسیر Laravel\Socialite\SocialiteServiceProvider را به فایل تنظیمات config/app.php اضافه نمایید. برای رجیستر facade نیز خط زیر را در آرایه Aliases های خود در همان فایل قرار دهید :

    'Socialize' => 'Laravel\Socialite\Facades\Socialite',

ممکن است بخواهید یک اعتبارنامه جدید برای سرویس OAuth ایاد کنید این اعتبارنامه ها در فایل config /services.php قرار می گیرند ، و به صورت آرایه ای با اندیس های facebook, twitter, google, یا github, تعریف می شوند . برای مثال :

    'github' => [

        'client_id' => 'your-github-app-id',

        'client_secret' => 'your-github-app-secret',

        'redirect' => 'http://your-callback-url',

    ],

 تصدیق هویت

حال برنامه شما آماده است تا عملیات تصدیق هویت کاربران را به خوبی اجرا کند !

 تصدیق هویت

امیدواریم این آموزش گزارش ورود کاربران و تصدیق هویت در لاراول مورد نیاز شما واقع شده باشد.

comment دیدگاه کاربران

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.