2016-12-29 3 views
0

Ich habe eine Web-App Foo, die nicht gesichert ist, und ich möchte es mit Flask sichern, und weitere Funktionen werden auch in dieser Flask-App kommen.Sichere eine andere Web-App mit Flask

Foo ist über Port 8081 zugänglich. Foo und dieses Flask Web sind im selben Server.

Muss ich jeden Endpunkt in Foo wie folgt neu schreiben?

@app.route('/overview') 
def foo_overview(): 
    if check_token(): 
     r = requests.get("http://localhost:8081/overview") 
     return r.content 
    else: 
     return redirect('/login') 

oder gibt es eine bequeme Möglichkeit, einen Tunnel zu localhost zu öffnen?

@app.route('/') 
def foo_app(): 
    if check_token(): 
     # port 8081 now is opened for this connection 
     url = tunnel("http://localhost:8081")    
     return redirect(url) 
    else: 
     return redirect('/login') 

Meine Idee ist es, nicht offen Port 8081, aber offen 80, so dass die Nutzer von Port gehen 80 und Sicherheitskontrolle, wenn geben, können sie beginnen, den Dienst 8081.

Antwort

0
from flask import stream_with_context 

@app.route('/<path:path>') 
def foo_app(path): 
    if check_token(): 
     # port 8081 now is opened for this connection 
     req = requests.get("http://localhost:8001/%s"%path, stream = True) 
     return Response(stream_with_context(req.iter_content()), content_type = req.headers['content-type']) 
    else: 
     return redirect('/login') 

I zu verwenden borgte das meiste davon aus http://flask.pocoo.org/snippets/118/

+0

Dies funktioniert mit allen Endpunkten außer einem, das HTML-Seite (enthält auch JS) zurückgibt, und dieser Endpunkt funktioniert nicht, da JS kontinuierlich neu lädt und nie stoppt. Ich habe gegoogelt, aber finde keinen Weg, damit umzugehen. –