با سلام
دوستان من یک وب سایت با لاراول راه اندازی کردم . حدود 500 نفر هم در حال حاضر توش ثبت نام کردن .
من سیستم لاگین رو از کلاسها و متدهای پیشفرض خود لاراول استفاده کردم و فقط ویوها رو عوض کردم . ولی هر از چند گاهی برای یوزرها مشکلات خیلی عجیبی پیش میاد.
1- مشکل اولی که مشاهده کردم(میدونم که عجیب به نظر میرسه ) اینکه که یکی از یوزرها وقتی لاگین کرده بود اطلاعات و اسم و یک یوزر دیگه رو نشون میداد . یوزرم از این مورد یک عکس گرفته و برام فرستاده . ولی من خودم بعدا که لاگین کردم با همون یوزر همه چیز درست بود. و حتی بعد از ریست کردن پسوردش به همون کامپیوتر anydesk زدم و دیگه درست شده بود. این دوتا یوزر هیچ ارتباطی به هم ندارن و اصلا همدیگه رو ندن و هرکدوم از شهرهای مختلف ایران هستن.
2- مشکل دوم اینکه توی کامپیوتر همین یوزرم توی مرورگر کروم توی بعضی صفحه ها انگار کاربر اصلا لاگین نکرده و مثلا توی هدر بجایی که اسم کاربر رو نشون بده دوباره دکمه ورود رو میزنه و بعد از اینکه دوباره روی دکمه ورود میزنی ریدایرکت میشه به صفحه پروفایل و اطلاعات یوزر رو نشون میده . جالبه که توی همون کامپیوتر و توی مرورگر کروم این مشکل وجود داره و مثلا توی فایرفاکس درسته . و نکته بعدی این یوزر که این اتفاق براش اوفتاده همون یوزر مورد شماره 1 هست
3- برای بعضی از کاربرا موقع تایید ایمیل یعنی زمانی که روی لینک ارسالی ایمیل توسط سیستم کلیک می کنه تا تایید بگیره . پیام ارور 403 میده و پیام invalid signature میده .
من همه بخشها رو از سیستم پیشفرض لاراول استفاده کردم و فقط ویو ها رو تغییر دادم . اگر کسی می تونه کمک کنه لطفا راهنماییم کنه ممنونم
بلاخره مشکل رو پیدا کردم . مشکل این بود که بعضی از isp ها مثل ایرانسل صفحات .html رو کش می کنه . من توی url هام این پسوند رو اضافه کرده بودم . و توسط isp کش میشد.
یک نکته رو هم یادم رفت بگم من از یک پکیج ماژولار ساز استفاده می کنم . به اسم این 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="{{ 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="{{ 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');
}
}
احیانا از سرویس cdn ابرآروان و ... استفاده میکنید؟
من این مشکل رو زمانی که از cdn ابرآروان استفاده میکردم داشتم، مربوط به کش شدن cookie ها هستش.
از پارس پک گرفتم سرور رو.
من تنظیمات session رو از file بردم روی کوکی . مشکل خیلی بدتر شد. و کلا همه سیستم لاگین ریخته بهم
بچه ها واقعا این مشکل برای من مثل یک کابوس شده . اگه کسی می تونه کمک کنه به من اطلاع بده هزینه اش رو هم پرداخت می کنم .
مساله اینه که روی کامپیوترهای خودم هیچوقت این اتفاق نمیوفته و فقط داره برای بعضی یوزر ها این اتفاق میوفته و پیگیری کردنش برام خیلی سخته
بلاخره مشکل رو پیدا کردم . مشکل این بود که بعضی از isp ها مثل ایرانسل صفحات .html رو کش می کنه . من توی url هام این پسوند رو اضافه کرده بودم . و توسط isp کش میشد.
@abbasi.tirdad ببخشید این پیام اخرتون من متوجه نشدم که مشکل از کجا بود یعنی چی از .html استفاده میکردید توی url ها ؟ چرا همچین کاری میکردید؟
تو ثبت نام و لوگین و ... که اصلا ما تو url اون از .html استفاده نمیکنیم و Url ها هم در حالت عادی اصلا .html ندارن کنه
لطفا توضیح بدید
درود
دلایل زیادی ممکنه این مشکل رو به وجود بیاره و من فکر نمی کنم مشکل به تنهایی از کش شدن ایجاد بشه ، ممکنه کش شدن در کنار یک اشتباه دیگه به این نتیجه ختم بشه.
اگر کد رو درست بنویسید نباید نگران بروز این گونه مشکلات در اثر کش شدن باشید ولی این راه حل رو تست کنید احتمالا جواب میده.
از سرویس ابر آروان استفاده کنید و در بخش cdn - تنظیمات caching از حذف اطلاعات Cache شده استفاده کنید ، برای تمام موارد.
خیلی از مشکلات مربوط به کش شدن با این ترفند حل میشه.
ببینید من یه توضیح بدم که چه اتفاقی افتاده بود . در مورد مشکل من تقریبا تمام مشکل از کش بود .
روتهای سیستم من به این شکل بود
برای پستها
website.com/xyz.html
برای کتگوریها
website.com/xyz
من یه expression توی روتهای لاراول نوشته بودم که اگه slug . html بود کنترل پست رو لود می کرد و اگه نداشت میرفت سراغ کتگوری برای همین صفحات پستها کش اتفاق می افتاد. چون پسوند html داشت . و چون کل صفحه کش میشد. دیگه انگار درخواستی سمت سرور نمیاومد و کلا اطلاعات کش شده توی سرور (ISP) رو نشون می داد که این شامل اطلاعات کاربری و اسم مثلا تعداد لایکها و ... هم بود. بعد جالب اینجا بود که صفحه به راحتی کش نمیشد . انگار یک الگوریتمی بود که صفحهای که بازدید زیادی داره و کاربراش تو یه محدوده خاصی هستن این کش اعمال میشه. ب بیشتر هم روی اینترنت ایرانسل این مشکل رو داشتم.
اکثر تنظیمات کش روی سرور درنهایت به کش شدن اطلاعات روی کلاینت ختم میشه که کش کنه یا نه . اما مشکلی که من داشتم کش شدن اطلاعات توسط ISP بود . کلا نمی دونم این کار قانونی هست یا نه . اینکه برای صرف جویی در هزینه و منابع اطلاعات رو کش کنن . درسته که توی url پسوند صفحه html هست ولی دلیل نمیشه که اطلاعاتش کش بشه چون ممکنه اطلاعات توش لزوما استاتیک نباشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟