2016-07-14 11 views
0

Ich versuche, die Seite nach erfolgreicher Anmeldung umleiten, aber ich laufe immer wieder in das gleiche Problem.url redirect in flask-login

Mein Login-Code:

@app.route('/login/', methods = ['GET', 'POST']) 
def login(): 
    if request.method == 'POST': 
     #data = request.get_json() 
     #app.logger.debug(data) 
     auth = g.couch.get('_design/authentication') 
     authView = ViewDefinition('_design/authentication','authentication',auth['views']['authentication']['map']) 
     for row in authView(): 
      if request.form['username'] == row.value['username'] and request.form['password'] == row.value['password']: 
       authUser = userModel.User(row.value) 
       app.logger.debug(row.value) 
       authUser.authenticated = True; 
       flask_login.login_user(authUser,remember = True) 
       next = request.args.get('next') 
       return redirect(next or url_for('/protected/')) 
    return render_template('sampleLoginPage.html') 

@app.route('/protected/', methods = ['GET']) 
@flask_login.login_required 
def protected(): 
    app.logger.debug("Successful Login") 
    app.logger.debug(flask_login.current_user.userID) 
    return Response(json.dumps({'message' : '\'You\'re logged in so you can see this page'+flask_login.current_user.username}), mimetype = 'application/json') 

die HTML-Vorlage nimmt den Benutzernamen und Passwort auf. Ich habe eine Couchdb-Ansicht, die den Benutzer authentifiziert.

Wenn ich meine Anmeldedaten eingeben, leitet die URL http://192.168.1.109:5000/login/?next=%2Fprotected%2F

ich nicht vollständig in der Dokumentation verstanden. Könnte jemand dieses Konzept besser erklären? Warum bekomme ich das?

Dies kommt auch, wenn ich versuche, es an meinem angularjs Frontend anzuschließen.

Grüße, Sunil

+0

Können Sie Ihre 'flask_login'' user_loader' Funktion anzeigen? – Wombatz

+0

Hallo Wombatz, Sorry für die späte Antwort. Es scheint, dass es ein Problem mit dem Frontend gibt (ich benutze AngularJS). Der Login funktioniert einwandfrei, wenn ich Postbote oder einen Browser verwende. Dieser Fehler wird nur ausgelöst, wenn ich über den App-Emulator darauf zugreife. – galeej

Antwort

0

ich auch dieses Problem hatte. Als ich @login_required aus der Deklaration entfernte, funktionierte die Weiterleitung wie beabsichtigt.