سلام
یه مشکلی عجیب تو یکی از کارهام پیش اومده.چند نفر گفتن وارد سایت که شدیم اطلاعات آخرین شخصی که لاگین کرده رو نشون میده و اصلا یوزر و پس نمیخواد.در واقع انگار طرف احراز شده ولی با کاربری یکی دیگه.به نظرتون مشکل از کجا میتونه باشه؟اصلا همچین چیزی داریم؟
سلام وقت بخیر
مشکل از کش سایتته!!
درخواست احراز هویت رو ب صورت php پاس دادی(یعنی طرف به صفحه لاگین میره که درخواست post رو فرستادی) و این باعث میشه سرور فکر کنه صفحه و اطلاعات داخلش ثابته و اطلاعات اخرین فرد کش میشه مگه اینکه طرف قبل بستن صفحه خروج بزنه!!
یا از پکیج های فریمورکی ک مینویسی استفاده کن یا اینکه اول کار auth رو بصورت ایجکس چک کن که اگه توکن ذخیره شده در مرورگر کاربر با اطلاعات سرور همخانی نداره logout بشه!!
اومدم از طریق ایجکس درخواست لاگین زدم و بعد احراز کوکی رو از سمت سرور ست کردم و موقع ارسال هر درخواست کوکی جدول رو با کوکی مرورگر چک میکنم اگه اوکی بود اجازه بده در غیر این صورت لاگ اوت بزنه و فعلا داره کار میکنه.توکن رو هم تو قسمت passport.use بعد از چک کردن پسورد ذخیره ش میکنم
از سمتی کارفرما قبل از اعمال این تغییرات گفت که من وقتی یوزر و پس رو میزنم صفحه کاربری شخص دیگه ای باز میشه.این تغییراتی که انجام دادم جلوش رو میتونه بگیره؟راهی هست که کلا کش iis غیرفعال بشه؟
router.post('/login2', (req, res, next)=> {
passport.authenticate(strategy, {
successRedirect: '/login_done',
failureRedirect: '/login_failed',
failureFlash: true
})(req, res, next);
})
router.get('/login_failed',function (req,resp) {
resp.send(my_funcs.create_list(false,"نام کاربری یا رمز عبور اشتباه می باشد",[]))
})
router.get('/login_done',function (req,resp) {
let q="select * from persons where id={id};"
q = stringformat(q, {
id:req.user.id
})
sql_query.exec(q,true, function (error,res) {
if (error) {
resp.send(my_funcs.create_list(true,"خطا در دریافت توکن",[]))
return
}
if (res.length!=1)
resp.send(my_funcs.create_list(false,"خطا در دریافت توکن یکتا",[]))
else{
resp.cookie('token', res[0].token)
resp.send(my_funcs.create_list(true,"خوش آمدید",{token:res[0].tak}))
}
})
})
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟