Flask ve Session: Temel Bilgiler
1. Session Verisi Kayboluyor: Oturum açtıktan sonra sayfayı yenilediğinizde ya da başka bir sayfaya geçtiğinizde session verisi kaybolur.
2. Veri Saklanamıyor: Veriyi session’a kaydetmeye çalıştığınızda bir şeyler ters gider.
O zaman gelin, bu problemin çözümü için adım adım neler yapabileceğimizi inceleyelim.
1. Session için Anahtarın Belirlenmesi
Bunu çözmek için, aşağıdaki gibi bir anahtar belirleyebilirsiniz:
from flask import Flask, session
app = Flask(__name__)
# Secret Key belirlenmesi
app.secret_key = 'bunu-degisik-bir-degerle-degistir'
@app.route('/')
def index():
session['username'] = 'flask_user'
return 'Session verisi kaydedildi!'
Burada, `secret_key`'i uygulamanız için benzersiz bir değere ayarlamanız gerekir. Eğer bu anahtar doğru şekilde ayarlanmazsa, session verisi kaybolur.
2. Session Verisi için `secure cookie` Kullanımı
Bunun için aşağıdaki gibi bir yapılandırma yapabilirsiniz:
app.config['SESSION_COOKIE_SECURE'] = True
Bu konfigürasyon, sadece HTTPS üzerinden çalışan bir site için gereklidir. Eğer uygulamanız sadece HTTP üzerinde çalışıyorsa, bu ayarı devre dışı bırakabilirsiniz.
3. Tarayıcı ve Cookie Ayarları
Bazı tarayıcılar, oturum çerezlerinin yaşam süresini kısaltabilir, bu da session verisinin kaybolmasına yol açabilir. Cookie'lerin doğru şekilde saklandığından emin olun.
4. Flask-Session Eklentisini Kullanma
Flask-Session’ı yüklemek için şu adımları izleyebilirsiniz:
pip install flask-session
Eklentiyi kullanmak için şu şekilde yapılandırma yapabilirsiniz:
from flask import Flask, session
from flask_session import Session
app = Flask(__name__)
# Flask-Session yapılandırması
app.config['SESSION_TYPE'] = 'filesystem'
app.config['SESSION_PERMANENT'] = False
app.config['SESSION_USE_SIGNER'] = True
Session(app)
@app.route('/')
def index():
session['username'] = 'flask_user'
return 'Session verisi kaydedildi!'
Burada, `SESSION_TYPE` olarak `filesystem` seçildiğinde, session verileri sunucu tarafında, dosya sisteminde saklanır.
5. Session Verisi için `permanent` Özelliği
@app.route('/')
def index():
session.permanent = True # Oturum kalıcı hale gelir
session['username'] = 'flask_user'
return 'Session verisi kaydedildi!'
Bu, session verilerinin tarayıcı kapansa bile saklanmasını sağlar. Ancak, bu verilerin ne kadar süreyle saklanacağını belirlemek için `PERMANENT_SESSION_LIFETIME` ayarını kullanabilirsiniz.
from datetime import
app.config['PERMANENT_SESSION_LIFETIME'] =(days=7)
Bu şekilde, session verisi 7 gün boyunca kalıcı olur.