I'm creating a flask server with Flask-Login like this:
Logging in works (it prints the correct user). Right after this, I make a test request. It always returns an anonymous user and a different one each time (expecting to see the one who just logged in).
The requests are made by a html page on a http server on the same (local) ip but a different port than the flask server.
This is my python file, using crossdomainflask:
from flask import *
from flask.ext.login import (LoginManager, UserMixin, login_user, current_user)
from crossdomainflask import *
class User(UserMixin):
def __init__(self, username):
self.name = username
@property
def id(self):
return self.name
class FlaskServer(object):
def __init__(self):
self.login_manager = LoginManager()
self.server = Flask(__name__)
self.server.secret_key = '123456'
self.server.config.update(PROPAGATE_EXCEPTIONS = True)
self.login_manager.init_app(self.server)
@self.login_manager.user_loader
def load_user(userid):
return User("test")
@self.server.route('/api/login', methods=['POST'])
@crossdomain(origin='*')
def login():
user = load_user(request.values.get('username'))
if user:
login_user(user)
print(current_user)
print(current_user.name)
return 'ok'
@self.server.route("/api/test", methods=['POST', 'GET'])
@crossdomain(origin='*')
def test():
print(current_user)
return 'ok'
self.server.run("0.0.0.0")
server = FlaskServer()
flask-login seems not to work with crossdomainflask. Solved it by serving static files with the same flask server.