使用neo4j实现Flask-login

时间:2017-01-17 20:48:52

标签: flask neo4j py2neo

我试图用neo4j实现Flask-login。尝试使用此Flask Login Documentation来实现。

我已将四种方法添加到用户类

class User:
    def __init__(self, username):
        self.username = username

    def is_authenticated(self):
        return True

    def is_active(self):
        return True 

    def is_anonymous(self):
        return False

    def get_id(self):
        return unicode(self.id)

    def find(self):
        user = graph.find_one("User", "username", self.username)
        return user

当我尝试调用login_user(user)时出现错误

def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        if not User(username).verify_password(password):
            flash('Invalid login.')
        else:
            session['username'] = username
            flash('Logged in.')

            user = User(username).find()
            login_user(user)
            return redirect(url_for('index'))

    return render_template('login.html')

我收到此错误

  

文件" /../ auth / view.py",第134行,在登录中       login_user(用户)
  文件" /../ lib / python3.4 / site-packages / flask_login.py",第709行,在login_user中       如果不是强制而不是user.is_active:
  AttributeError:' Node'对象没有属性' is_active'

另外,我不确定如何定义加载用户回调函数。

@login_manager.user_loader
def load_user(user_id):
    return User.get(user_id)

我找不到任何涵盖此主题的文档。有人可以帮助让这个工作或指向文档吗?

1 个答案:

答案 0 :(得分:0)

find_one方法返回Node。您可能希望返回username的{​​{1}}属性而不是整个实体。所以你需要这样的东西:

Node