- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是使主 View (/
)成为登录页面。用户登录后,将根据其角色呈现另一个页面。登录(/auth
)时,我看到正确输入了用户名和密码。然后,它尝试呈现/
,告诉我我的用户未通过身份验证,并呈现/login
。以下是描述此情况的 View :
观看次数
@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'))
current_user.is_authenticated
始终返回
False
。我创建的用户已正确创建并提交到数据库。下面是我的用户模型,根据 flask 登录提供了必要的方法:
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
函数:
@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
,即被
/auth
进行身份验证的人,但事实并非如此。
最佳答案
您有一个名为User.is_authenticated
的方法。不过,在User.__init__
内,您设置了一个具有相同名称的属性。
self.is_authenticated = False
current_user.is_authenticated
时,您都将访问始终为false的属性。
__init__
中删除分配,并将
is_authenticated
更改为以下内容:
def is_authenticated(self):
return True
def is_authenticated(self):
return self._authenticated
load_user
函数。
filter
进行
User.id==user_id
编码,而是对其进行
get
设置。未返回用户,因为
load_user
返回的是
User.query.get(True)
而不是
User.query.get(user_id)
。
@login_manager.user_loader
def load_user(user_id):
try:
return User.query.get(user_id)
except:
return None
关于python-3.x - 为什么我的current_user不通过flask-login进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597038/
Devise自述文件没有提及任何关于 @current_user 和 I don't see any reference to it in Devise's source code 的内容- 也不在我
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
刚开始使用我的应用程序身份验证设计开发,但是在从模型访问 current_user 时遇到了麻烦。我从 Controller 访问它没有问题。 对于我的场景,我需要获取当前用户 ID 以跟踪谁编辑了博
我在我的flask应用程序中使用flask_login扩展名登录用户。如您所知,此扩展名具有存储current_user的变量。该代码可以正常运行,除非要进行测试。 当我测试代码(使用unittest
我想用 Swift 为 OS X 应用程序定义一个变量。 但我总是收到此错误:“CURRENT_USER 的重新声明无效”。 这是我写的: var CURRENT_USER: Firebase? 我也
例如我有一个用户和一个地址,关系如下: class User < ActiveRecord::Base devise :database_authenticatable, :registerabl
我正在按照 teamtreehouse.com guide 构建我的第一个 Ruby on Rails 应用程序(ruby 2.0.0p353) . 我正在使用设计 3.2.2 devise在 app
我对 How to customize Devise to store more informations in the session? 有同样的问题 当我使用 current_user和 user
要为我的问题提供更多背景信息,请参阅此 Github 问题 - https://github.com/getsentry/raven-ruby/issues/144 我正在使用 raven这是一个错误
鉴于以下模型: Room (id, title) RoomMembers (id, room_id) RoomFeed, also an observer 当房间标题更新时,我想创建一个 RoomFe
我在 Rails 应用程序的 lib 目录中创建了一个类。该类需要访问 Devise 的 current_user。 我还应该指出,这个 lib 类经常从模型代码中访问,因此不能将 current_u
在 Flask 中,我想了解如何创建一个行为类似于 current_user 的函数,因为它在任何地方( Controller 和 View )都可用,但我很难真正知道它是什么搜索以找到答案。 我能找
我目前正在阅读 RoR 教程(http://railstutorial.org/chapters/sign-in-sign-out#sec:signin_success 是相关部分),这似乎相当不错,
我在 rails5 中使用 Active Model Serializer 0.10.7 我想知道如何在序列化程序中访问设计 current_user。 current_user 应该默认设置为范围。
如何将参数传递给我的 current_user 重定向? # SessionHelper.rb def current_user if(user_id = session[:user_id]
默认列值存在问题... 以下作品: alter table chartdata.reddit_comments add modified_datetime timestamp default now(
我使用以下命令检查 PostgreSQL 数据库中用户的组或角色, select rolname from pg_authid where pg_has_role('some_username', r
我正在使用系统测试来验证以下流程是否按用户预期的方式工作: 在表格中注册 登录 访问帐户页面 更新账户信息 但是,我在创建用户后遇到错误: Puma caught this error: Couldn
我正在使用 Flask-Login,我想通过调用 current_user.is_authenticated() 检查用户是否已登录。 我的 Flask 应用程序被组织成蓝图,其中包含一个主要的 __
我是一名优秀的程序员,十分优秀!