Çalıştığım kişisel bir proje için arka ucum ve jQuery olarak Flask kullanıyorum. Onların adı veya şifre benim/giriş yolu şöyle arka uç üzerindeFlask ve jQuery ile yeniden yönlendirme
vb yanlıştır kullanıcıyı söylerdim errorFuction olarak
$.ajax({
type: "POST",
data: JSON.stringify(body), //username and password
contentType: 'application/json; charset=utf-8',
url: "/login",
success: successFunction,
error: errorFunction,
complete: completeFunction
});
:
ben bunu yapmak istiyorum giriş yapmak
@app.route("/login", methods=['GET', 'POST'])
def login():
if(request.method == "POST"):
#retrieve the username and password sent
data = request.json
if(data is None or not 'username' in data or not 'password' in data):
abort(400)
else:
count = User.query.filter(User.username == data['username']).count()
if(count == 0):
abort(404) #that user doesnt exist
else:
passIsCorrect = User.query.filter(User.username == data['username'],
User.password == data['password']).count()
if(passIsCorrect):
session['user'] = data['username']
return redirect(url_for('index'))
else:
abort(401)
else:
return render_template('login.html')
Ancak istemci tarafında, tarayıcı yönlendirme yapmıyorsa ve tamamlama işlevinde yanıt nesnesinde bakarsak normalde dönüş olacağını görmek benim '/' route: 200 Tamam ve index.html şablonu.
Sorum şu: Ben müşteri yönlendirmesi yapabilirsiniz müdahale bazı yolu
var mı?
Sorunun, jquery'nin tarayıcıyı değil, isteği başlatması olduğunu varsayıyorum.
Bu sorunu çözmeye yönelik ilk denemem yanıtı make_response
kullanarak kendim oluşturmak ve Konum üstbilgisini ayarlamaktı, ancak bu aynı davranışla sonuçlandı. Benim şu anki çözüm 200 döndürmektir ve ardından istemci window.location = "/"
yapar, ama bu (index
son nokta ile sadece içerik durumunda) Yönlendirilen içeriği döndürür çünkü
Düzenli bir formun davranışını çoğaltmak istiyorsanız, neden AJAX kullanıyorsunuz? Ayrıca, düz metin şifrelerini saklamayın. Onları karıştır. – Blender
Bu görev için [Flask-Login] 'e (https://github.com/maxcountryman/flask-login) bir göz atmak isteyebilirsiniz. Muhtemelen, çoğu self-built auth sisteminden daha güvenli olacak. –
@Blender Sonunda – bio595