没有数据库的Python Flask身份验证

时间:2015-04-20 03:15:43

标签: python database login flask

我试图通过消除任何数据库的使用来简化Flask项目。这将消除使用SQLAlchemy的需要。

我无法复制相同的登录机制,验证我在Flask教程中学到的用户名和密码。

我在网上找到了一些示例代码,并尝试将两者结合起来。我已经阅读了尽可能多的文档,但是我仍然对提取有效的UserMixin对象感到头疼,因为在使用Flask.Login扩展时需要登录Flask应用程序。

如果有人可以帮我克服下面的代码缺陷,让他们在一起工作,我将永远感激。

以下是观点:

from flask import render_template, redirect, request, url_for, flash
from flask.ext.login import login_user, logout_user, login_required
from . import auth
from .forms import LoginForm
from ..models import User, load_user

@auth.route('/login', methods=['GET','POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
    user = User.get(form.userName.data)
    user = load_user(user)
    if user is not None:
        login_user(user, form.remember_me.data)
        flash('You are now logged in!')
        return redirect(request.args.get('next') or url_for('main.index'))
    flash('Invalid username or password')
return render_template('auth/login.html', form=form)

以下是模型:

from flask.ext.login import UserMixin
from . import login_manager

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

class User(UserMixin):

# proxy for a database of users
user_database = {u"user": (u"user", u"password"),u"admin": (u"admin", u"password")}

def __init__(self, username, password):
    self.id = username
    self.password = password

@classmethod
def get(cls,userName):
    return cls.user_database.get(userName)

问题是我无法找到正确实例化用户对象以使用其他Flask Login方法的方法。无论我做什么代码变化,我都会遇到错误。

0 个答案:

没有答案