为什么我的。 current_user B B的不经过身份验证。 flask-login?
我的目标是让我的家庭看 /
/ 登录页面。 用户进入系统后,根据其角色显示另一页面。 当我进入系统时 /
/, 我看到输入用户名和密码正确。 然后他试图想象
, 我告诉我我的用户未经身份验证,并可视化
. 以下是描述它的视图:
看法
问题是 flask-login's
总是回报
在我试图登录之后。 我创建的自定义用户是正确创建并在数据库中修复的。 下面是我的用户模型,必要的方法按照 flask-login:
用户模型
这是一个函数
:
load_user
为什么
回报
? 我假设了
会做
, 那是, , 谁被B由B认证。
, 但似乎不是。
</user>
/
/ 登录页面。 用户进入系统后,根据其角色显示另一页面。 当我进入系统时 /
/auth
/, 我看到输入用户名和密码正确。 然后他试图想象
/
, 我告诉我我的用户未经身份验证,并可视化
/login
. 以下是描述它的视图:
看法
@app.route/"/login"/
def login//:
return flask.render_template/'login.html'/
@app.route/"/", methods=["GET"]/
def home//:
if current_user.is_authenticated:
if current_user.is_admin//:
return flask.render_template/'admin_index.html'/
return flask.render_template/'user_index.html'/
logger.info/"Not authenticated. Going back to login."/
return flask.render_template/'login.html'/
@app.route/"/auth", methods=["POST"]/
def auth//:
username = request.form['username']
password = request.form['password']
user = db.session.query/User/.filter/User.username == username/.first//
logger.info/user/
logger.info/"{0}: {1}".format/username, password//
print/"user exists? {0}".format/str/user != None///
print/"password is correct? " + str/user.check_password/password///
if user and user.check_password/password/:
user.is_authenticated = True
login_user/user/
return flask.redirect/url_for/'home'//
return flask.redirect/url_for/'login'//
问题是 flask-login's
current_user.is_authenticated
总是回报
False
在我试图登录之后。 我创建的自定义用户是正确创建并在数据库中修复的。 下面是我的用户模型,必要的方法按照 flask-login:
用户模型
class User/db.Model/:
"""
A user. More later.
"""
__tablename__ = 'User'
id = db.Column/db.Integer, primary_key=True/
username = db.Column/db.String/128/, unique=True/
hashed_password = db.Column/db.String/160//
admin = db.Column/db.Boolean/
def __init__/self, username, password="changeme123", admin=False/:
self.username = username
self.set_password/password/
self.admin = admin
self.is_authenticated = False
def is_active/self/:
return True
def is_authenticated/self/:
return self.is_authenticated
def is_anonymous/self/:
return False
def is_admin/self/:
return self.admin
def get_id/self/:
return self.id
def __repr__/self/:
return '<user {0}="">'.format/self.username/
def set_password/self, password/:
self.hashed_password = generate_password_hash/password/
def check_password/self, password/:
return check_password_hash/self.hashed_password, password/
这是一个函数
load_user
:
load_user
@login_manager.user_loader
def load_user/user_id/:
try:
return User.query.get/User.id==user_id/
except:
return None
为什么
current_user.is_authenticated
回报
False
? 我假设了
login_user/user/
会做
current_user == user
, 那是, , 谁被B由B认证。
/auth
, 但似乎不是。
</user>
没有找到相关结果
已邀请:
1 个回复
龙天
赞同来自:
. 但是,里面
您使用相同名称安装属性。
这重新定义了该方法。 然后,每次 , 当你检查一下
, 您可以访问始终为假的属性。
您必须删除预约
并改变
下一个:
如果由于某种原因需要它是动态的,则重命名该属性,以使其不会遮住方法。
另一个问题与您的功能有关。
.
反而
ing 为了
, 你
ting 他的。 用户没有返回,因为
回报
反而
.
如果您进行以下更改,它将工作: