راکت
حل شده

مشکل عجیب در authentication

12 پاسخ

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

1- مشکل اولی که مشاهده کردم(میدونم که عجیب به نظر میرسه ) اینکه که یکی از یوزرها وقتی لاگین کرده بود اطلاعات و اسم و یک یوزر دیگه رو نشون میداد . یوزرم از این مورد یک عکس گرفته و برام فرستاده . ولی من خودم بعدا که لاگین کردم با همون یوزر همه چیز درست بود. و حتی بعد از ریست کردن پسوردش به همون کامپیوتر anydesk زدم و دیگه درست شده بود. این دوتا یوزر هیچ ارتباطی به هم ندارن و اصلا همدیگه رو ندن و هرکدوم از شهرهای مختلف ایران هستن.

2- مشکل دوم اینکه توی کامپیوتر همین یوزرم توی مرورگر کروم توی بعضی صفحه ها انگار کاربر اصلا لاگین نکرده و مثلا توی هدر بجایی که اسم کاربر رو نشون بده دوباره دکمه ورود رو میزنه و بعد از اینکه دوباره روی دکمه ورود میزنی ریدایرکت میشه به صفحه پروفایل و اطلاعات یوزر رو نشون میده . جالبه که توی همون کامپیوتر و توی مرورگر کروم این مشکل وجود داره و مثلا توی فایرفاکس درسته . و نکته بعدی این یوزر که این اتفاق براش اوفتاده همون یوزر مورد شماره 1 هست

3- برای بعضی از کاربرا موقع تایید ایمیل یعنی زمانی که روی لینک ارسالی ایمیل توسط سیستم کلیک می کنه تا تایید بگیره . پیام ارور 403 میده و پیام invalid signature میده .

من همه بخشها رو از سیستم پیشفرض لاراول استفاده کردم و فقط ویو ها رو تغییر دادم . اگر کسی می تونه کمک کنه لطفا راهنماییم کنه ممنونم

ثبت پرسش جدید

پاسخ‌ها

12
تیرداد
تیرداد
@abbasi.tirdad
بهترین پاسخ

بلاخره مشکل رو پیدا کردم . مشکل این بود که بعضی از isp ها مثل ایرانسل صفحات .html رو کش می کنه . من توی url هام این پسوند رو اضافه کرده بودم . و توسط isp کش می‌شد.

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

اطلاعات لاگین و فرم ها رو بذارین نگاه بندازیم.

تیرداد
تیرداد
@abbasi.tirdad

یک نکته رو هم یادم رفت بگم من از یک پکیج ماژولار ساز استفاده می کنم . به اسم این Modules | Caffeinated
و مدل یوزر و کنترلرهای لاگین و ثبت نام و ... رو همه رو بردم داخل یک ماژول.

این فرم لاگین هست.

@extends('layouts.master')

@section('content')
<div class="container py-5 my-5">
    <div class="card my-5">
        <div class="card-body">
            <div class="row">
                <div class="col-12 col-lg-7 col-xl-6">
                    <form action="{{ route('login') }}" method="POST">
                        {{ csrf_field() }}
                        <div class="row align-items-center">
                            <div class="col-12">
                                <div class="font-weight-bold my-3">
                                    برای استفاده از امکانات سایت وارد شوید
                                </div>
                            </div>
                            <div class="col-12 mt-4">
                                <div class="form-group material-style">
                                    <input id="email" type="text" class="form-control @error('email') is-invalid @enderror"
                                        name="email" value="{{ old('email') }}" id="email"
                                        placeholder=" " required autocomplete="email" autofocus>
                                    <label for="email" class=" ">آدرس
                                        ایمیل</label>
                                    @error('email')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                    @enderror
                                </div>
                            </div>
                            <div class="col-12">
                                <div class="form-group material-style">
                                    <input id="password" type="password"
                                        class="form-control @error('password') is-invalid @enderror" name="password"
                                        value="{{ old('password') }}" id="password" required autocomplete="password"
                                        placeholder=" ">
                                    <label for="password" class="">
                                        کلمه عبور
                                    </label>
                                    @error('password')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                    @enderror
                                </div>
                            </div>
                            <div class="col-12 my-4">
                                <div class="row justify-content-between">
                                    <div class="col-12 col-lg-6 ">
                                        <a class="mt-3 d-inline-block" href="https://roocket.ir/{{ route('register') }}">
                                            هنوز ثبت نام نکرده ام !
                                        </a>
                                    </div>
                                    <div class="col-12 col-lg-6 ">
                                        <button type="submit" class="btn btn-success w-100">
                                            ورود به سایت
                                        </button>
                                        @if (Route::has('password.request'))
                                        <div>
                                            <a class="btn btn-link p-0 m-2" href="https://roocket.ir/{{ route('password.request') }}">
                                                @lang('user::site.forgotـyourـpassword?')
                                            </a>
                                        </div>
                                        @endif
                                    </div>
                                </div>
                            </div>
                        </div>
                    </form>
                </div>

                <div class="d-none d-lg-flex col-lg-6 align-items-center">
                    <img src="/img/login.jpg" class="w-100" alt="">
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

اینم کنترلر لاگین loginController.php

<?php

namespace App\Modules\User\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/profile';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function showLoginForm()
{
    return view('user::auth.login');
}
}

شاید پاسخ شما همین‌جا باشد

Reza Jashnsaz
Reza Jashnsaz
@rezajashnsaz0011

تخصص: مهندس نرم افزار

شاید مشکل از هاستت باشه

تیرداد
تیرداد
@abbasi.tirdad

vps دارم . روش دایرکت ادمین نصبه . چی رو چک کنم ؟

تیرداد
تیرداد
@abbasi.tirdad

مشکل من با این کلاس هست . Auth . این یوزر درستی رو برنمی گردونه

فرید عقیلی
فرید عقیلی
@faridaghili

تخصص: طراح و توسعه دهنده وب

احیانا از سرویس cdn ابرآروان و ... استفاده می‌کنید؟
من این مشکل رو زمانی که از cdn ابرآروان استفاده می‌کردم داشتم، مربوط به کش شدن cookie ها هستش.

تیرداد
تیرداد
@abbasi.tirdad

از پارس پک گرفتم سرور رو.
من تنظیمات session رو از file بردم روی کوکی . مشکل خیلی بدتر شد. و کلا همه سیستم لاگین ریخته بهم

تیرداد
تیرداد
@abbasi.tirdad

بچه ها واقعا این مشکل برای من مثل یک کابوس شده . اگه کسی می تونه کمک کنه به من اطلاع بده هزینه اش رو هم پرداخت می کنم .
مساله اینه که روی کامپیوترهای خودم هیچوقت این اتفاق نمیوفته و فقط داره برای بعضی یوزر ها این اتفاق میوفته و پیگیری کردنش برام خیلی سخته

مرادی
مرادی
@moradiemails

تخصص: توسعه دهنده لاراول و برنامه نویس اندروید

@abbasi.tirdad ببخشید این پیام اخرتون من متوجه نشدم که مشکل از کجا بود یعنی چی از .html استفاده میکردید توی url ها ؟ چرا همچین کاری میکردید؟
تو ثبت نام و لوگین و ... که اصلا ما تو url اون از .html استفاده نمیکنیم و Url ها هم در حالت عادی اصلا .html ندارن کنه
لطفا توضیح بدید

حسن حکمتی
حسن حکمتی
@hekmati

تخصص: برنامه نویس وب و بلاکچین

درود
دلایل زیادی ممکنه این مشکل رو به وجود بیاره و من فکر نمی کنم مشکل به تنهایی از کش شدن ایجاد بشه ، ممکنه کش شدن در کنار یک اشتباه دیگه به این نتیجه ختم بشه.
اگر کد رو درست بنویسید نباید نگران بروز این گونه مشکلات در اثر کش شدن باشید ولی این راه حل رو تست کنید احتمالا جواب میده.
از سرویس ابر آروان استفاده کنید و در بخش cdn - تنظیمات caching از حذف اطلاعات Cache شده استفاده کنید ، برای تمام موارد.
خیلی از مشکلات مربوط به کش شدن با این ترفند حل میشه.

تیرداد
تیرداد
@abbasi.tirdad

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

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

برای پست‌ها
website.com/xyz.html

برای کتگوری‌ها
website.com/xyz

من یه expression توی روت‌های لاراول نوشته بودم که اگه slug . html بود کنترل پست رو لود می کرد و اگه نداشت میرفت سراغ کتگوری برای همین صفحات پست‌ها کش اتفاق می افتاد. چون پسوند html داشت . و چون کل صفحه کش میشد. دیگه انگار درخواستی سمت سرور نمی‌اومد و کلا اطلاعات کش شده توی سرور (ISP) رو نشون می داد که این شامل اطلاعات کاربری و اسم مثلا تعداد لایک‌ها و ... هم بود. بعد جالب اینجا بود که صفحه به راحتی کش نمیشد . انگار یک الگوریتمی بود که صفحه‌ای که بازدید زیادی داره و کاربراش تو یه محدوده خاصی هستن این کش اعمال میشه. ب بیشتر هم روی اینترنت ایرانسل این مشکل رو داشتم.

اکثر تنظیمات کش روی سرور درنهایت به کش شدن اطلاعات روی کلاینت ختم میشه که کش کنه یا نه . اما مشکلی که من داشتم کش شدن اطلاعات توسط ISP بود . کلا نمی دونم این کار قانونی هست یا نه . اینکه برای صرف جویی در هزینه و منابع اطلاعات رو کش کنن . درسته که توی url پسوند صفحه html هست ولی دلیل نمیشه که اطلاعاتش کش بشه چون ممکنه اطلاعات توش لزوما استاتیک نباشه.

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

ورود یا ثبت‌نام