Flask GET ve POST İşlemleri (Twitch İçerir)

try:
    if jwt.decode(request.cookies.get("token"),"passw",algorithms="HS256"):
        return render_template("login.html", streamer=streamer,img=imgProfile)
except except_.DecodeError:
     return redirect(url_for("homePage"))

eğer bu haliyle kullanıyorsanız gayet normal bir durum decode ettikten sonra tokenin sahibinin o olduğunu doğrulamanız gerekli arif_cem ise veri tabanından kontrol etmelisiniz bu token gerçekten de arif_cem kullanıcısına mı ait yoksa herhangi bir kullanıcı istediği kişinin sayfasına girebilir herhangi bir doğrulama olmadığı için

1 Beğeni

Şöyle bir değişiklik yaptım.
Yaptığım değişiklik app.py dosyasında şöyle:

@app.route("/loading")
def createCookie(): # cookie oluşturma
    resp = make_response(redirect(url_for("login", streamer=userN)))
    encode_ = jwt.encode({"token":token},"passw")
    resp.set_cookie("token",encode_,httponly=True,samesite="Strict")
    return resp

@app.route("/login/r/<streamer>")
def login(streamer):
    try:
        decode_ = jwt.decode(request.cookies.get("token"),"passw",algorithms="HS256")
        if db.userEqualbearer(streamer,decode_=decode_["token"]):
            Thread(target=call_bot,args=(db.read(streamer), db.writeUserNameforBot(streamer),)).start()
            return render_template("login.html", streamer=streamer,img=imgProfile)   
    except IndexError:
        return render_template("error.html")

(Thread olan kısma aldırış etmeyin orda yaptığım twitch botunu çağırıyorum.)

token değerini encode ediyorum cookiede encode edilmiş token tutuluyor.
sonra token değerini decode ediyorum edilen değeri userEqualbearer methoduna parametre olarak veriyorum aynı zamanda kullanıcı adını da. Bu method içeriğide şöyle:

# (Kod açıklamaları çok karışık olabilir. Eğer karışık geldiyse yalnızca kodu okumanız daha iyi olabilir :))
    def userEqualbearer(self,user,decode_) -> bool:
        liste = [f"{i}: {j}" for i,j in self.ref.get().items()] # Veri tabanından gelen "kullanıcı: token" düzeninde sözlük tipinde bir veri geliyor. Düzeni koruyup listeye ekliyorum
        liste2 = [f"{user}: {decode_}"] # Aynı düzende parametrelere girilecek argumanlarla bir liste oluşturuyorum
        return [i for i in liste if i in liste2][0] in liste # `liste` adlı listenin içerisinde `liste2` nin de içerisinde varsa bunu liste içerisine al ve `liste` adlı listenin içerisinde bu listenin 0. elemanı var ise true yoksa false

Yaptğı şey şu; sözlük tipinde veri döndüren ve sözlük düzenini koruyan ( “arif_cem: asd123”) gibi sözlük elemanlarını listeye string veri tipinde yazıyor.
daha sonra bir liste de aynı düzenle aldığı parametreler ile bir düzen oluşturuyor.
son olarak yeni bir liste oluşturuluyor o listenin içerisinde databaseden çekilip düzenlenen listenin içerisinde, parametrelerden gelen argumanların olduğu düzende (“kullanıcı adı: token”) olanı listeye ekliyor. Sonra oluşturulan bu listenin elemanı databaseden gelen veriler ile oluşturulmuş listenin içerisindeyse true değerini döndürüyor. Bu merthod her çalıştığında bir kez çağrıldığı için liste içerisinde her zaman yalnızca bir eleman olmuş oluyor.

Şimdi dediğinizi baz alarak böyle bir yöntem denedim. Bu işe yarıyor. Hatta app.py tarafında ilgili kişi sizin sayfanıza girmek isterken indexError hatası alıyor bunu yakalayıp error.html sayfasına yönlendiriyorum. bu işlemi Edgeden yapıyorum hali hazırda da Brave’de diğer hesabıma giriş yapmış bulunmaktayım. Sonra Edgeden giriş yaptığım yere braveden denediğimde olmuyor. Temelde gerçekten de olmuş. Fakat işin içinde çözülmeyi bekleyen daha birçok sorun var :slight_smile: onlarıda (umarım) halledeceğimi(zi) düşünüyorum.

Sanki bu bir çözüm değilde kulağımı kafamın arkasından dolandırıp tutmakla eşdeğer. Yani diyorum ki acaba aynı tas aynı hamam mı yaptıklarım ?

Bir incelerseniz çok sevinirim.

(Çok yanlış test ediyorda olabilirim. Bundan dolayı belkide yaptığım şeylerin kimisi doğruyken bir anda yanlış çıkıyor olabilir. Bundan dolayı hatayı yakalamayı eski haline getiriyorum)