flask-session - 在会话中使用烧瓶 auth.verify_password
问题描述
我正在努力让身份验证正常工作。我通过 api 而不是 Web 应用程序来控制登录行为。为此,我正在使用flask session
and HTTPBasicAuth()
。用户登录后直到他注销,我不希望他为每个对 api 的请求重新登录(或)发布身份验证。为此,我正在利用session['username']
.
我的代码auth.verify_password
如下。
@auth.verify_password
def verify_password(username, password):
if 'username' in session:
return True
else:
where_col = "username"
if '@' in parseaddr('username')[1]:
where_col = "email"
conn = mysql.connect()
cur = conn.cursor()
sql = "SELECT email, pwd FROM users_table WHERE {}=%s".format(where_col)
cur.execute(sql, (username))
row = cur.fetchone()
cur.close()
conn.close()
if not row:
print "Invalid user"
return False
session['username'] = username
return check_password_hash(row[1], password)
Now, after the login is complete, I want to get some other product data for which I will check using the `auth.login_required` decorator
@app.route('/products', methods=['GET', 'POST'])
@auth.login_requied
def get_products():
conn = mysql.connect()
cur = conn.cursor()
sql = "select * from all_products"
row = cur.fetchall()
cur.close()
conn.close()
return row
@app.route('/logout', methods=['GET', 'POST'])
@auth.login_requied
def logout():
session.pop(auth.username())
下次我打电话时get_products
,我不想传递auth
给请求标头。当我这样做时,上面的代码不起作用。我觉得在某处(或)我的方法完全错误的地方缺少一些代码。session['username']
似乎并没有持续下去。它每次都必须通过登录方法,而我的目标是跳过登录,直到用户注销。在这里欣赏任何建议。
解决方案
推荐阅读
- java - Vaadin 8 MessageBox 在 keyPress 上关闭
- java - Sonarqube - 包含被忽略
- javascript - 使用 Graph OAuth v2.0 刷新令牌
- json - IE11 不设置 x-cfrtoken HTTP 标头,除非使用 InPrivate 窗口,这会导致服务器响应 HTTP 403 Access Denied
- notepad++ - 在记事本++中拆分一行[找到该行中的最后一个数字时拆分该行]
- android - 为什么可以在 Kotlin 中更改 val 属性?
- node.js - 如何从 AWS Lambda Node.js 8.10 异步函数返回 net.socket 数据到 AWS API 网关?
- spring - JpaRepsitory 在使用方法时给出错误 existsByUserName(String userName);
- reactjs - FlatList 的对象数组数据源在用作 renderItem 时为空
- python - Python Matplotlib 更新画布中的条形图