اعتبارسنجی کد اعتبارسنجی و ورود به سایت

زمان قرارگیری : 07 اردیبهشت 1399
زمان این قسمت : 14:19
برای دسترسی به این دوره نیاز است بصورت نقدی این دوره را خریداری کنید و این دوره بخشی از دوره های اعضای ویژه نمیباشد

تعداد شرکت کنندگان 328 نفر
قیمت دوره 259000 تومان
وضعیت دوره در حال برگزاری
زمان کل دوره 26:39:36
تعداد قسمت‌ها 117
نوع دسترسی نقدی

زمانی که کد فعال‌سازی به کاربر پیامک شد، باید کاربر آن را در سیستم وارد کند و شما مطمئن شوید که کاربر کد صحیحی را وارد کرده است. در این جلسه روش پیاده‌سازی اعتبارسنجی کد پیامک شده و ورود به سایت را به شما آموزش خواهم داد.

بخش اول
مقدمات
رایگان 09:10
بخش ششم
مفاهیم هسته لاراول
برای دسترسی به این دوره نیاز است بصورت نقدی این دوره را خریداری کنید و این دوره بخشی از دوره های اعضای ویژه نمیباشد

تعداد شرکت کنندگان 328 نفر
قیمت دوره 259000 تومان
وضعیت دوره در حال برگزاری
زمان کل دوره 26:39:36
تعداد قسمت‌ها 117
نوع دسترسی نقدی

آفلاین
user-avatar
مدرس دوره حسام موسوی

اول داستان، طراح گرافیک بودم و ۲ سالی به عنوان طراح مشغول بودم، بعد به برنامه‌نویسی علاقمند شدم و الان بیشتر از ۱۰ ساله که عاشق کدزنی و چالش‌های پروژه‌های مختلفم. به تدریس علاقه خاصی دارم و دوست دارم دانشی که در این راه بدست آوردم را در اختیار دیگران هم قرار بدم. 

سوالات و گفتگو‌ها

سوالات و گفتگو‌ها

اگر سوال و مشکلی یا حتی بحثی در یکی از حوزه‌های برنامه‌نویسی دارید این بخش به شما کمک ویژه‌ای خواهد کرد

دورهای پیشنهادی

مشاهده همه دوره ها
آشنایی با امکانات جدید لاراول 7

آشنایی با امکانات جدید لاراول 7

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

آموزش لاراول

آموزش لاراول

فریمورک لاراول یکی از محبوبترین و بهترین فریمورک های حال حاضر برای زبان php می باشد، آموزش لاراول راکت می‌تواند به شکل رایگان به شما لاراول را آموزش د...

آشنایی با امکانات جدید لاراول 5.5

آشنایی با امکانات جدید لاراول 5.5

در همین ابتدای این دوره باید بگم کسانی میتونن این دوره رو مشاهده کنند که با لاراول آشنا باشن پس اگر هنوز نمی دونید که لاراول چطور کار میکنه ، لطف ابتد...

آشنایی با امکانات جدید لاراول 5.3

آشنایی با امکانات جدید لاراول 5.3

لاراول ۵.۳ بزودی به طور رسمی ارائه میشه اما نسخه develop اون چند وقتی میشه که در اختیار کاربران قرار گرفته در این دوره آموزشی سعی میکنیم که امکانات و...

دسترسی رایگان برای اعضای ویژه

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
آفلاین
user-avatar
Ali safir
2 ماه پیش

سلام
من برای ورود از کد زیر استفاده کردم البته در جایی این کد رو پیدا کردم و خودم دقیقا نمیدونم اصلا استفاده ازش درست است یا خیر ؟ و اینکه attempt و intended چه چیزی هستند و چه کاری انجام میدهند

   if(Auth::attempt($validData)){
            return redirect()->intended('/');

        }else{
            return Redirect::to("login")->withErrors('نام کاربری یا رمز عبور نامعتبر می باشد');
        }
آفلاین
user-avatar
حسام موسوی
2 ماه پیش

سلام چرا از این کد استفاده کردید هدفتون چی هست ؟
متد attempt سعی میکنه با اطلاعاتی که بهش میدید کاربر رو لاگین کنه و متد intended هم در صورت ورود کاربر ، اون رو به صفحه مورد نظر هدایت میکنه

آفلاین
user-avatar
Ali safir
2 ماه پیش

ورود و ثبت نام کاربر با شماره همراه و رمز عبور هست ، برای همین از این روز استفاده کرده ام

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

الان با این کد مشکل دارید در اجرا کردن ؟

آفلاین
user-avatar
Ali safir
2 ماه پیش

خیر ، چون توی بخش ورود و ثبت نام اصلا به این مورد اشره نشده بود خواستم ببینم روند این درست است یا باید از متدهای خود لاراول استفاده کنیم و فقط ایمیل رو به شماره مراه تغییر دهیم

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

اطلاعات اگر به این شکل درست باشه باید انجام بشه

Auth::attempt(['phone' => $phone, 'password' => $password])
آفلاین
user-avatar
Ali safir
2 ماه پیش

حسام جان کد کاملا کار میکنه ، فقط میخواستم بدونم استفاده ازش صحیح است یا ورود و عضویت خود لاراول رو پیاده سازی کنم و به جای ایمیل از شماره همراه استفاده کنم؟

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

همین الانم دارید به جای ایمیل از شماره تلفن استفاده میکنید دیگه ؟
نه مشکلی نداره این کد بنظرم

آفلاین
user-avatar
Ali safir
2 ماه پیش

بله ، و یک سال دیگه ، مشکلی نداره ما توی یک جدول چندین عبارت رو یونیک کنیم مثلا شماره همراه و کد ملی

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

بنظرم بهتر تست کنید بجای اینکه من به شما بگم
تا اینطوری یه چیزی یاد بگیرید

آفلاین
user-avatar
سید حسین رضوی
2 ماه پیش

سلام ببخشید سیستم احراز هویت خود لاراول وقتی که یه روت میدلور auth رو داره بعد هدایت کاربر به صفحه لاگین کاربر رو مجدد به روتی که ازش اومده بر میگردونه. حالا توی این سیستم که کاملا کاستوم شده است توسط خودمون چطور این امکان رو پیاده سازی کنیم؟؟ یعنی کاربر رو به روت قبلش هدایت کنیم؟

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

با session
وارد صفحه ورود که میشید با session اون url که کاربر ازش اومده رو ذخیره کنید و بعد از از ورود با همون session کاربر رو هدایت کنید به جای که باید

آفلاین
user-avatar
سید حسین رضوی
2 ماه پیش

ممنون متوجه شدم
فقط یه سوال دیگه هم برام پیش اومد اونم اینکه ما توی این موقع به تابع خواصی دسترسی نداریم که بتونیم سشن ایجاد کنیم، چطوری باید این کارو انجام بدیم؟
مثلا داخل روت هستم و کاربر با کلیک روی ادامه به روت بعدی منتقل میشه که میدلور auth داره حالا کاربر اگه لاگین نباشه بدون دخالت ما منتقل میشه به صفحه لاگین. چطور میشه که سشن ساخت؟؟

www.sit.sit/user
آفلاین
user-avatar
سید حسین رضوی
2 ماه پیش

حلش کردم
یعنی خود لاراول مشکل رو خیلی ساده حل کرده کافیه جایی که توی لاگین کنترلر کاربر رو ریدایکرت میکنیم به این تغییر بدیم

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

این خودش چک میکنه اگه به صورت خودکار به صفحه لاگین منتقل شدیم ما رو به روت قبل برگردونه در غیر این صورت روت دیفالت داخل intended رو بر میگردونه

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

بله اگر وارد intended بشید از عنوان session ای که لاراول زمان ورود به صفحه لاگین ثبت میشه رو میتونید مشاهده بفرمایید.
من فکر کردم از حالت لاراول منظورتون همین intended بود و شما میخواید در پروژه خودتون چیزی شبیه به این رو داشته باشید که از ابتدا توضیح دادم

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

سلام، در کنترولر توکن، ارورهای ویلیدیشن مربوط به کد اعتبار سنجی نمایش داده نمیشه !

کد کنترولر :

<?php

namespace App\Http\Controllers\Auth;

use App\ActiveCode;
use App\Http\Controllers\Controller;
use App\Rules\Recaptcha;
use App\User;
use Illuminate\Http\Request;

class TokenController extends Controller
{
    public function showToken(Request $request)
    {
        if(! $request->session()->has('auth')) {
            return redirect(route('login'));
        }

        $request->session()->reflash();

        return view('auth.token');
    }

    public function token(Request $request)
    {

        $notification = array(
            'message' => 'ورود شما موفقیت آمیز بود.',
            'alert-type' => 'success'
        );

        $this->validate($request, [
            'token' => 'required|numeric|digits:6',
            'g-recaptcha-response' =>['required', new Recaptcha]
        ]);

        if(! $request->session()->has('auth')) {
            return redirect(route('login'));
        }

        $user = User::find($request->session()->get('auth.user_id'));

        $status = ActiveCode::verifyCode($request->token , $user);

        if(! $status) {
            return redirect(route('phone.token'))->with('error','ddddd');
        }

        if(auth()->loginUsingId($user->id,$request->session()->get('auth.remember'))) {
            $user->activeCode()->delete();

            if( $user->hasRole('superadministrator') )
                return redirect('management/panel/dashboard')->with($notification);
            return redirect('user/panel/dashboard')->with($notification);
        }

        return redirect(route('login'));

    }
}

کد ویو :

@include('auth.header')
<!-- begin::Body -->
<body class="kt-page-content-white kt-quick-panel--right kt-demo-panel--right kt-offcanvas-panel--right kt-header--fixed kt-header-mobile--fixed kt-subheader--enabled kt-subheader--transparent kt-aside--enabled kt-aside--fixed kt-page--loading">

<!-- begin:: Page -->
<div class="kt-grid kt-grid--ver kt-grid--root kt-page">
    <div class="kt-grid kt-grid--hor kt-grid--root  kt-login kt-login--v6 kt-login--signin" id="kt_login">
        <div class="kt-grid__item kt-grid__item--fluid kt-grid kt-grid--desktop kt-grid--ver-desktop kt-grid--hor-tablet-and-mobile">
            <div class="kt-grid__item  kt-grid__item--order-tablet-and-mobile-2  kt-grid kt-grid--hor kt-login__aside">
                <div class="kt-login__wrapper">
                    <div class="kt-login__container">
                        <div class="kt-login__body">
                            <div class="kt-login__logo">
                                <a href="#">
                                    <img src="{{ asset('dist/assets/media/company-logos/logo-2.png') }}">
                                </a>
                            </div>
                            <div class="kt-login__signin">
                                <div class="kt-login__head">
                                    <h3 class="kt-login__title">ورود به پنل مدیریت</h3>
                                </div>
                                <div class="kt-login__form">
                                    @if($errors->any())
                                        <div class="alert alert-solid-danger alert-bold" role="alert">
                                            <div class="alert-text">{{ $errors->first() }}</div>
                                        </div>
                                    @endif

                                    <form method="POST" class="kt-form" action="{{ route('phone.token') }}">
                                        @csrf
                                        <div class="form-group">
                                            <input type="text" class="form-control form-control-last @error('token') is-invalid @enderror" placeholder="کد فعالسازی" id="token" value="{{ old('token') }}" name="token">
                                            @error('token')
                                            <span class="invalid-feedback" role="alert">
                                                    <strong>{{ $message }}</strong>
                                                </span>
                                            @enderror
                                        </div>
                                        <br>
                                        <div class="form-group">
                                            <x-recaptcha :has-error="$errors->has('g-recaptcha-response')" />

                                            @error('g-recaptcha-response')
                                            <span class="invalid-feedback" role="alert">
                                                    <strong>{{ $message }}</strong>
                                                </span>
                                            @enderror
                                        </div>

                                        <div class="kt-login__actions">
                                            <button type="submit" class="btn btn-brand btn-pill btn-elevate">ورود</button>
                                        </div>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="kt-login__account">
                                <span class="kt-login__account-msg">
                                    هنوز ثبت نام نکرده اید ؟
                                </span>&nbsp;&nbsp;
                        <a href="{{ route('register') }}" class="kt-login__account-link">ثبت نام !</a>
                    </div>
                </div>
            </div>
            <div class="kt-grid__item kt-grid__item--fluid kt-grid__item--center kt-grid kt-grid--ver kt-login__content" style="background-image: url({{ asset('dist') }}/assets/media/bg/bg-4.jpg);">
                <div class="kt-login__section">
                    <div class="kt-login__block">
                        <h3 class="kt-login__title">ورود به پنل مدیریت</h3>
                        <div class="kt-login__desc">
                            ورود
                            <br>تست
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- end:: Page -->

@include('auth.footer')
آفلاین
user-avatar
حسام موسوی
3 ماه پیش

کجای این کد رو میفرمایید

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

توی توکن کنترولر ارورهای مرب،ط به ولیدیشن یا مثلا کد اعتبارسنجی اگه درست نبود !! ارورهاش در ویو توکن نمایش نمیده

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

منظورتون این خط کد هست که بعد از برگشت بهتون ارور نمایش بده؟

  if(! $status) {
            return redirect(route('phone.token'))->with('error','ddddd');
        }

ما اصلا چنین موردی رو اضافه نکردیم و گفتیم اگر کاربر توکن رو اشتباه زد بره وارد صفحه ورود بشه دوباره

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

درست است خودک اضافه کردم، اما چگونه میشه بجای اینکه به صفحه لاگین ارجاع داده بشه، تو همون صفحه بهش پیام بده !

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

ممنون میشم راهنمایی کنید.

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

به این شکل تست بفرمایید

  return redirect(route('phone.token'))->withErrors(['message1'=>'this is first message']);
آفلاین
user-avatar
محمد نمازی
3 ماه پیش

قبلا این روش رو هم تست کردم، با هر روشی که تست کردم، اگر اشتباه وارد بشه به لاگین میره !!!

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

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

   if(! $request->session()->has('auth')) {
            return redirect(route('login'));
        }

چون سشن مورد نظر تا یک روت فقط اعتبار داره. با کد زیر حل میشه


         if(! $status) {
            $request->session()->reflash();
  return redirect(route('phone.token'))->withErrors(['message1'=>'this is first message']);
        }
آفلاین
user-avatar
محمد نمازی
3 ماه پیش

بازم جواب نگرفتم و مجددا به لاگین ارجاع داده میشه !

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

کد تغییر داده شده رو بفرستید لطفا و تست بگیرید داخل اون شرط اصلا اجرا میشه !؟

آفلاین
user-avatar
محمد نمازی
3 ماه پیش
<?php

namespace App\Http\Controllers\Auth;

use App\ActiveCode;
use App\Http\Controllers\Controller;
use App\Rules\Recaptcha;
use App\User;
use Illuminate\Http\Request;

class TokenController extends Controller
{
    public function showToken(Request $request)
    {
        if(! $request->session()->has('auth')) {
            return redirect(route('login'));
        }

        $request->session()->reflash();

        return view('auth.token');
    }

    public function token(Request $request)
    {

        $notification = array(
            'message' => 'ورود شما موفقیت آمیز بود.',
            'alert-type' => 'success'
        );

        $request->validate([
            'token' => ['required' , 'numeric' ,'digits:6'],
            'g-recaptcha-response' =>['required', new Recaptcha],
        ]);

        if(! $request->session()->has('auth')) {
            return redirect(route('login'));
        }

        $user = User::find($request->session()->get('auth.user_id'));

        $status = (new \App\ActiveCode)->verifyCode($request->token , $user);

        if(! $status) {
            $request->session()->reflash();
            return redirect(route('phone.token'))->withErrors(['message1'=>'this is first message']);
        }

        if(auth()->loginUsingId($user->id,$request->session()->get('auth.remember'))) {
            $user->activeCode()->delete();

            if( $user->hasRole('superadministrator') )
                return redirect('management/panel/dashboard')->with($notification);
            return redirect('user/panel/dashboard')->with($notification);
        }

        return redirect(route('login'));

    }
}
آفلاین
user-avatar
حسام موسوی
3 ماه پیش

کاری که گفتم انجام دادید و تست کردید که ایا داخل شرط اجرا میشه اصلا یا خیر ؟

آفلاین
user-avatar
ZR
3 ماه پیش

سلام
دوره در میانه هست یا رو به پایان؟تا پایان دوره چند بخش یا چند جلسه دیگه هست؟

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

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

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

سلام
خسته نباشید
موقعی که کد فعالسازی رو وارد میکند و سپس دکمه تایید رو میزنم این ارور رو بهم میده

Call to a member function activeCode() on null
آفلاین
user-avatar
حسام موسوی
3 ماه پیش

مشخص هست

Call to a member function activeCode() on null

user برابر با null هست که activeCode اجرا نمیشه

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

کاربر وجود داره، کد هم بهش پیامک میشه اما وقتی کد ارسال شده رو وارد میکنم و check میزنم این ارور رو میده

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

منظورمو متوجه نشدید !

$user->activeCode

اون متغییر $user رو درست برنگردونید و برابر با null هست

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

نمیدونم مشکل از کجاست چون کدهارو خط به خط چک کردم و دقیقا عین کدهای خودتون بود.

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

در این خط زیر

        $user = User::findOrFail($request->session()->get('auth.user_id'));

لاگ بگیرید که ایا کاربر وجود داره یا نه برابر با null هست !

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

عجیبه که null بر میگردونه

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

احتمالا درست session ثبت نکردید

$request->session()->get('auth.user_id')

این رو لاگ بگیرید احتمالا null باشه.
به اسم session دقت کنید که درست باشه در هنگام ثبت و دریافت

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

الان که چک کردم اصلا سشن توی مرورگر ذخیره نمیشه ( سشنی با اسم auth نیست ) با اینکه مشکلی در کدها ندیدم، از فیلد remember استفاده نکردم فکر نمیکنم مشکل از این باشه !!

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

سشن در سمت سرور ذخیره میشه فقط session_id در سمت مرورگر ذخیره میشه.
دیگه دیباگ بفرمایید که session شما چرا کار نمیکنه

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

با اینکه کدهارو با کدهای شما جایگزین کردم بازم همون ارور رو میده

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

نمیدونم به چه شکلی پیاده کردید باید بررسی کنید.
چون در دوره بهتون نمایش دادیم رو خودمون تست کردیم نمیشه برای من کار کنه برای شما دقیقا همون باشه کار نکنه
بنابراین قسمتی رو اشتباه پیش رفتید

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

مشکل از findOrFail هست که با استفاده از  find حل میشه، واسم جالبه

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

بله !😳 مشکل از findOrFail ! 😳
اصلا تو کتم نمیره این موضوع با تغییر این به find حل شده باشه ! حتما یه کار دیگه کردید

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

😁 باور کنید مجددا کدهارو بازنویسی کردم بازم فرقی نکرد. شاید یه باگ تو نسخه 7.8.1 باشه

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

😱😱😱 اصلا راه نداره خدایش

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

درود،
توی مدل ActiveCode متدی بنام verifyCode وجود نداره و این متد رو توی کنترولر TokenController هم صداش زدید ! 😊

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

از scope استفاده کردم شما احتمالا اون قسمتی که اومدیم متد scopeVerifyCode رو ساختیم ندیدید اصلا ! :)

آفلاین
user-avatar
محمد نمازی
3 ماه پیش

کدوم جلسه در خصوص متد Scope توضیح دادید ؟ کلا قاطی کردم

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

در جلسات قبل کجاشو یادم نیس

آفلاین
user-avatar
Soheil
2 ماه پیش