【问题标题】:The session is unavailable because no secret key was set会话不可用,因为未设置密钥
【发布时间】:2020-07-31 10:06:18
【问题描述】:

我正在构建一个登录表单,但我遇到了会话。当我尝试登录时,出现错误“会话不可用,因为未设置密钥”。请检查我的代码:

init.py(主文件)

from flask import Flask
...
from flask_session import Session

app = Flask(__name__)

app.config['SECRET_KEY'] = 'gfgfgghghgfhgfhgfhgfhfgghghghghghg'
Session(app)

routes.py(用户蓝图)

from flask import render_template, session, url_for, redirect, request, Blueprint
...
from mywebsite.users.forms import (LoginForm, RegisterForm)
from mywebsite import db, bcrypt, app

users = Blueprint('users', "__name__")

@users.route('/login', methods=['GET', 'POST'])
def login():
    loginForm = LoginForm()
    if request.method == 'POST':
        session.pop('user_id', None)

也许我应该将密钥传递给 users 蓝图?如果是这样,我该怎么做?

附:当我摆脱 flask_session 它工作正常

【问题讨论】:

    标签: flask


    【解决方案1】:
    # app.config["SECRET_KEY"] = "..."  # wrong
    app.secret_key = "My Secret key"  # right
    

    Flask Documentation for Session

    SO Question: Demystify Flask app secret key

    编辑:我刚刚注意到您使用的是Flask-Session

    请注意,flask 本身具有会话,如果您只需要任何会话,则不一定需要此扩展。

    Flask-Session is an extension for Flask that adds support for Server-side Session to your application.和解释Flask-Session extension vs default session

    要让Flask-Session 运行,您还需要为其提供SESSION_TYPE 配置(请参阅secret key not set in flask session, using the Flask-Session extension)。

    app.config['SESSION_TYPE'] = 'filesystem'
    

    【讨论】:

    • 非常感谢!!现在它起作用了!我认为默认会话类型就可以了。但是我对会话类型一无所知,所以这就是为什么我对 flask_session 有问题。再一次感谢你。你真的是最棒的!
    猜你喜欢
    • 2017-09-15
    • 2020-09-09
    • 2016-06-10
    • 2017-12-10
    • 1970-01-01
    • 2019-05-23
    • 2011-04-23
    • 2014-11-22
    • 2014-11-11
    相关资源
    最近更新 更多