Saytning HTTP va HTTPS qismlari orasidagi sinxronizatsiya

Men CakePHP (v 1.3) va Auth komponentini ishlataman. Ayni paytda barcha cookie fayllari HTTP va HTTPS orasida mavjud emas.

Misol uchun, foydalanuvchi HTTP-ga kirishi mumkin va HTTPS-ga kira olmaydi, yoki A foydalanuvchining HTTP-da kirishi mumkin va B-foydalanuvchisi HTTPS-ga kirishi mumkin.

Bu boshqa narsalar uchun ham sodir bo'ladi (savatdagi narsalar kabi)

Nima sodir bo'layotganini yoki uni qanday tuzatishni bilmayman.

HTTP va HTTPS da bir xil cookie fayllari bo'lishi uchun nima qilishim kerak?

0
Ehtimol, HTTP yoki HTTPS tomonidan yuborilgan umumiy so'rovlarda loyiha sababi bu boshqa sayt mazmunini taqdim qilishi mumkin.
qo'shib qo'ydi muallif Eugene Mayevski 'Allied Bi, manba

2 javoblar

Yadro kodini o'zgartirish ko'pincha yomon narsa va sizning holatingizda kerakli narsani qilish imkoni bor, lekin Cake yo'li.

App/config/core.php ilovasida: Session.save qiymatini o'zgartiring

//Configure::write('Session.save', 'php');

//this will look for a 'mysession.php' file in app/config
Configure::write('Session.save', 'mysession'); 

App/config-da: sessiya uchun kerakli parametrlar bilan mysession.php faylini yarating

ini_set('session.use_trans_sid', 0);
ini_set('session.name', Configure::read('Session.cookie'));
ini_set('session.cookie_lifetime', $this->cookieLifeTime); 
ini_set('session.cookie_path', $this->path);

//overwrite Cake setting already set by CakeSession 
ini_set('session.cookie_secure', 0); 

Shuni ham yodda tutingki, agar cookie-fayllaringiz xavfsiz bo'lmasa, HTTPS-dan foydalanishning ko'pgina afzalliklari yo'qoladi, chunki HTTPS va HTTP uchun bir xil tizimga cookie ishlatilsa, uni o'g'irlash oson bo'ladi va keyin HTTPS uchun sessiyani ijro qilish uchun.

HTTPS orqali administrator qismi va HTTP orqali jamoatchilik qismi bo'lgan veb-ilovasi ham bor edi. Ikki xil cookie nomini ko'rsatib, ikkala qismni ajratish imkoniyatiga ega bo'ldim:

App_controller.php da:

if(env('HTTPS')
{
    Configure::write('Session.save', Configure::read('Session.save') . '_https');
}

App/config-da, * mysession_https.php * bilan boshqa fayl yarating

ini_set('session.use_trans_sid', 0);
ini_set('session.name', Configure::read('Session.cookie') . 'S');

//cookie destroyed when users close their browser 
ini_set('session.cookie_lifetime', 0); 

ini_set('session.cookie_path', $this->path);

ini_set('session.cookie_secure', 1); 

Bu HTTP va HTTPS orqali bir-biridan ikkita turli seansni yaratadi, lekin mening barcha holatlarda nozik yoki shaxsiy ma'lumotlar HTTPS orqali bajarilganligi va HTTP orqali amalga oshirilgan qismi faqatgina navigatsiyani yanada osonlashtirish uchun sessiya talab qiladi.

0
qo'shib qo'ydi
HTTPS-ning HTTPS-cookie-fayllarini ko'rishlari mumkinmi? Misol uchun, ularning profil ma'lumotlarini http orqali ko'rsatishni xohlamayman, ammo agar ular tizimga kirsa, httpda "kirish" havolasini ko'rsatishni xohlamayman, buning o'rniga "mening hisobim" havolasini ko'rsatishni xohlamayman.
qo'shib qo'ydi muallif JD Isaacks, manba
Yoq. Xavfli cookie-fayl xavfsiz bo'lmagan uzatish oldini olish uchun hech qachon http urliga yuborilmaydi. Siz xohlagan narsani bajarish uchun foydalanuvchi http://ga kirish o'zgaruvchisini faqat foydalanuvchi kiritilganligini ko'rsatish uchun foydali bo'lishi mumkin bo'lgan maxsus http sahifasiga muvaffaqiyatli kirishdan so'ng foydalanuvchini yo'naltirishi mumkin. foydalanuvchi tizimdan chiqadi. Ammo HTTPSdan http ga yo'naltiruvchi manzilni oladi, agar brauzer shikoyat qila olmasligiga amin emasman.
qo'shib qo'ydi muallif nIcO, manba

Buning ehtimol xavfli cookie-fayllari sabab bo'lishi mumkin, bu faqat https sahifaga https orqali kirganda yuboriladi. Agar sahifaga https orqali kirsangiz, CakePHP avtomatik ravishda session.cookie_secure-ni o'rnatadi.

To disable this behaviour, change ini_set('session.cookie_secure', 1); to ini_set('session.cookie_secure', 0); inside cake\libs\cake_session.php

Men dastur bilan shug'ullanishni tavsiya qilaman va tizimga kirishni (va barcha a'zolik sahifalarini) faqatgina https orqali berishni tavsiya qilaman.

0
qo'shib qo'ydi
Men buni allaqachon qilyapman, agar sahifada http bo'lsa, avvalgi Render() da joylashgan barcha foydalanuvchilar uchun https (https) ga yo'naltiriladi. Shuning uchun nima qilishim kerakligiga amin emasman.
qo'shib qo'ydi muallif JD Isaacks, manba
u erda menga ko'rsatganingiz uchun tashakkur. Muammoni bartaraf etganini tasdiqlayman. :)
qo'shib qo'ydi muallif JD Isaacks, manba
Qabul qilingan javobda tavsiya etilgan narsani bajarishga harakat qiling: stackoverflow.com/questions/308659/…
qo'shib qo'ydi muallif Petr, manba
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb