· Guides · 4 min read
Streamlit ve Firebase Auth: Güvenli ve Merkezi Oturum Yönetimi
A comprehensive guide to choosing the right documentation platform and creating an effective documentation strategy.

Web uygulamalarında kullanıcı oturum yönetimi kritik bir konudur. Streamlit, hızlı ve etkileşimli uygulamalar geliştirmek için harika bir araç olsa da, oturum yönetimi için sunduğu session_state yaklaşımı bazı kısıtlamalara sahiptir.
Bu yazıda, Streamlit uygulamalarında Firebase Auth ile token tabanlı oturum yönetiminin nasıl daha güvenli, tutarlı ve ölçeklenebilir bir çözüm sunduğunu inceleyeceğiz. Ayrıca Clerk ile entegre authentication, Pydantic ile veri validasyonu ve Firecrawler ile web content extract örneği de paylaşacağım.
Neden Firebase Token Tabanlı Yaklaşım?
Streamlit’in session_state mekanizması basit projeler için yeterli olabilir, ancak sayfa yenileme, sekmeler arası senkronizasyon ve güvenlik açısından bazı dezavantajlar içerir. Firebase token kullanımı bu sorunları nasıl çözüyor, birlikte bakalım.
1️⃣ Merkezi Veri Yönetimi
Firebase’de tüm oturum bilgileri merkezi olarak saklanır. Kullanıcı oturumları, sunucuda değil, Firebase Authentication hizmeti üzerinde tutulur. Veri tutarlılığı ve yönetimi kolaylaşır.
2️⃣ Güçlü Oturum Güvenliği
Firebase token’lar şifrelenmiş ve güvenli bir şekilde saklanır. Her oturum, benzersiz bir token ile takip edilir. Kullanıcı oturumları Firebase üzerinden yönetilebilir ve sonlandırılabilir.
3️⃣ Sayfa Yenileme ve Sekme Sorunlarını Çözme
session_state mekanizması, sayfa yenilendiğinde veya farklı sekmeler açıldığında oturum bilgisini kaybeder. Firebase token her zaman güncel ve bağımsız çalışır, böylece kullanıcı tekrar giriş yapmak zorunda kalmaz.
4️⃣ Ölçeklenebilirlik Avantajı
Streamlit uygulaması büyüdükçe session_state yönetimi zorlaşır. Firebase tabanlı oturum yönetimi, birden fazla Streamlit instance’ı ile uyumludur. Mikroservis mimarisi ile kolayca entegre edilebilir.
5️⃣ Daha Kolay Hata Ayıklama
Firebase’de oturum geçmişi saklanabilir. Kullanıcı giriş-çıkış kayıtları takip edilebilir. Sorun oluştuğunda hata ayıklamak çok daha kolaydır.
Firebase Token ile Oturum Yönetimi Nasıl Yapılır?
Aşağıdaki adımlarla Firebase token yönetimini Streamlit ile entegre edebiliriz:
Firebase Authentication’ı Ayarlayın
Firebase konsolunda yeni bir proje oluşturun. Authentication sekmesinden E-posta/Şifre tabanlı giriş özelliğini etkinleştirin.
Streamlit Uygulamasında Firebase SDK’yı Kullanın
firebase-admin kütüphanesini yükleyin:
pip install firebase-admin
Firebase hizmet hesabı anahtarınızı projenize ekleyin.
Firebase Token ile Kullanıcı Doğrulaması Yapın
Kullanıcı giriş yaptıktan sonra, Firebase tarafından verilen JWT token’ı saklayın. Her sayfa yüklemesinde Firebase’den token doğrulaması yaparak oturumu yönetin.
Oturum ve Çıkış İşlemlerini Yönetin
Firebase’de oturum açan kullanıcının token’ını doğrulayın. Kullanıcı çıkış yaptığında token’ı temizleyerek oturumu sonlandırın.
Clerk ile Entegre Authentication
Clerk, modern web uygulamalarında kullanıcı oturum yönetimi için eksiksiz bir çözümdür. Streamlit ile Clerk’ı entegre ederek daha profesyonel bir kullanıcı yönetimi sistemi oluşturabiliriz.
import streamlit as st
from clerk import Clerk
# Clerk configuration
clerk = Clerk(
publishable_key="your_publishable_key",
secret_key="your_secret_key",
api_host="https://api.clerk.dev"
)
# User authentication
user = clerk.user.read()
if not user:
st.error("Lütfen giriş yapınız!")
else:
st.success(f"Merhaba {user.username}!")
Pydantic ile Veri Validasyonu
Pydantic, veri validasyonu ve yapılandırma için güçlü bir araçtır. Streamlit form verilerini Pydantic modelleriyle doğrulayarak hataları önleyebiliriz.
from pydantic import BaseModel
class UserForm(BaseModel):
name: str
email: str
form = st.form("user_form")
form_data = form.dict()
if form.is_submitted():
try:
validated_data = UserForm(**form_data)
st.success("Form doğrulandı!")
except Exception as e:
st.error(f"Doğrulama hatası: {str(e)}")
Firecrawler ile Web Content Extract
Firecrawler, web içeriğini analiz etmek ve extracted etmek için ideal bir araçtır. Streamlit uygulamamızda Firecrawler’ı kullanarak kullanıcıya daha zengin içerikler sunabiliriz.
from firecrawler import Crawler
crawler = Crawler()
content = crawler.extract_from_url("https://example.com")
st.write(content)
Brave Search ile Web Araması
Brave Search API’sini kullanarak uygulamamızda web araması功能i ekleyebiliriz.
import requests
def search_brave(query):
api_key = "your_api_key"
url = f"https://api.brave.so/v1/search?q={query}&api_key={api_key}"
response = requests.get(url)
return response.json()
search_query = st.text_input("Arama yapın...")
if search_query:
results = search_brave(search_query)
st.write(results)
Use Case: Tam Entegre Uygulama
Aşağıda, Streamlit + Firebase + Clerk + Pydantic entegrasyonunun tam bir örneğini bulabilirsiniz:
import streamlit as st
import firebase_admin
from firebase_admin import auth
from clerk import Clerk
from pydantic import BaseModel
# Firebase configuration
cred = credentials.Certificate("firebase_service_account.json")
firebase_admin.initialize_app(cred)
# Clerk configuration
clerk = Clerk(
publishable_key="your_publishable_key",
secret_key="your_secret_key",
api_host="https://api.clerk.dev"
)
class UserForm(BaseModel):
name: str
email: str
# Authentication flow
def main():
st.title("Streamlit Firebase Auth Example")
if not st.session_state.get("user"):
# Giriş formu
form = st.form("login_form")
email = form.text_input("Email")
password = form.text_input("Şifre", type="password")
if form.form_submit_button("Giriş Yap"):
try:
user = auth.get_user_by_email(email)
token = auth.create_custom_token(user.uid)
st.session_state["user_token"] = token
st.success("Giriş başarılı!")
except Exception as e:
st.error(f"Hata: {str(e)}")
else:
# Kullanıcı bilgisi
user_info = clerk.user.read()
st.write(f"Merhaba {user_info.username}!")
# Form örneği
form = st.form("user_form")
form_data = form.dict()
if form.is_submitted():
try:
validated_data = UserForm(**form_data)
st.success("Form doğrulandı!")
except Exception as e:
st.error(f"Doğrulama hatası: {str(e)}")
# Çıkış butonu
if st.button("Çıkış Yap"):
st.session_state.pop("user_token", None)
st.success("Başarıyla çıkış yapıldı!")
if __name__ == "__main__":
main()
Bu örnek, Streamlit uygulamasında Firebase Authentication, Clerk, Pydantic ve Brave Search’ın nasıl entegre edileceğini göstermektedir. Ayrıntılı kod örnekleri ve açıklamalar, kullanıcıların kendi uygulamalarını oluşturmasına yardımcı olacaktır.
Siz de deneyimlerinizi paylaşın! Streamlit ve Firebase’i birlikte kullanıyor musunuz? Yorumlarınızı bekliyorum! 🚀