Python Flask Login-用户在成功登录后返回匿名,然后重定向

Python Flask Login-用户在成功登录后返回匿名,然后重定向,python,flask-login,Python,Flask Login,我只是想用开发的代码建立一个基本的登录模型 在我的用户成功登录并发出重定向(url\u for('index'))后,用户将失去身份验证并返回到值 我意识到有一些简单的解决方法,但我试图理解为什么我的代码不能像示例那样工作 我一定是错过了一些简单的东西,或者是不理解你的想法。重定向后,用户如何保持登录状态 \uuuu init\uuuuu.py 。。。 login\u manager=LoginManager() 登录管理器。初始化应用程序(应用程序) login\u manager.login

我只是想用开发的代码建立一个基本的登录模型

在我的用户成功登录并发出
重定向(url\u for('index'))
后,用户将失去身份验证并返回到值

我意识到有一些简单的解决方法,但我试图理解为什么我的代码不能像示例那样工作

我一定是错过了一些简单的东西,或者是不理解你的想法。重定向后,用户如何保持登录状态

\uuuu init\uuuuu.py

。。。
login\u manager=LoginManager()
登录管理器。初始化应用程序(应用程序)
login\u manager.login\u view=“login”
...
型号.py

类用户(UserMixin,db.Model):
__tablename_uu='users'
uid=db.Column(db.Integer,主键=True)
firstname=db.Column(db.String(100))
lastname=db.Column(db.String(100))
username=db.Column(db.String(100),unique=True)
email=db.Column(db.String(120),unique=True)
pwdhash=db.Column(db.String(54))
def u u init u;(self、firstname、lastname、email、用户名、密码):
...
def get_id(自身):
返回(self.username)
定义报告(自我):
返回“”%(self.username)
routes.py

@login\u manager.user\u loader
def加载用户(用户id):
尝试:
返回User.query.get(用户id)
除:
一无所获
@app.route('/login',methods=['GET','POST'])
def login():
form=LoginForm()
如果request.method==“POST”:
如果form.validate():
user=user.query.filter_by(username=form.username.data.lower()).first()
登录用户(用户,记住=False)
断言当前用户是否经过身份验证
返回重定向(url_for('index'))
其他:
返回呈现模板('login.html',form=form)
返回呈现模板('login.html',form=form)
@应用程序路径(“/index”)
@需要登录
def index():
返回渲染模板(“home.html”)

我已经复习过了,但是登录方法与上面的不同。

将这些函数添加到您的
用户
类中

def is_authenticated(self):
    return True

def is_active(self):
    return self.active

def is_anonymous(self):
    return False
如果我没记错的话,
Flask登录
需要在
User
类中使用它们

def is_authenticated(self):
    return True

def is_active(self):
    return self.active

def is_anonymous(self):
    return False

self.active
是一个布尔字段。简单地说,它告诉用户是否处于活动状态。您可能希望使用
active=db.Column(db.Boolean,nullable=False)
声明它。好吧,我需要回答我自己的问题,关于一个我应该抓住的愚蠢疏忽(模糊的眼睛?)

def load\u user(user\u id)中进行简单修复:
我需要更换线路的地方

错误:
返回User.query.get(User\u id)

好:
返回User.query.filter\u by(username=User\u id).first()


我想关键在于
def load_user()
在维护会话完整性方面的重要性。

据我所知,类“user(UserMixin,db.Model):”中的UserMixin包括这些函数。然而,我插入了那些带有UserMixin的函数,得到了相同的结果。找不到有关self.active“”的任何文档,似乎没有任何效果-