Flask问题:RuntimeError:会话不可用,因为未设置任何秘密密钥

问题描述 投票:0回答:1

所以我在Mac上的登录系统上使用flask_login,似乎遇到了问题。运行代码时,它说即使设置了密码也没有设置。

我的代码是:

from flask import Flask, render_template, request, session, redirect, url_for, jsonify
from flask_session import Session
from flask_login import LoginManager, login_user,logout_user, login_required, current_user
from models.model import *
from sqlalchemy import or_, and_

app = Flask(__name__)
app.secret_key = "<Some secret key>"
app.config["SQLALCHEMY_DATABASE_URI"] = '<Some Uri>'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)
Session(app)

login_manager = LoginManager()
login_manager.login_view = 'index'
login_manager.init_app(app)

@app.route("/")
def index():
    if current_user.is_authenticated:
        return render_template("home.html")
    return render_template("login.html", tip="You have to log in first.")

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

@app.route("/login", methods=['POST'])
def verif():
    """ Gets name and password from form  """
    username = request.form.get("username")
    password = request.form.get("password")

    """ Checks user and password. """

    userpassCheck = User.query.filter(and_(User.username == username, User.password == password)).first()
    if not userpassCheck:
        return render_template("index.html", tip="Incorrect Username or Password.")

    login_user(userpassCheck)

    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True, use_reloader=True)

整个错误回溯是:

Traceback (most recent call last):
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/scythia/Desktop/Project1/application.py", line 54, in verif
    login_user(userpassCheck)
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask_login/utils.py", line 170, in login_user
    session['_user_id'] = user_id
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/werkzeug/local.py", line 350, in __setitem__
    self._get_current_object()[key] = value
  File "/Users/scythia/Desktop/Project1/venv/lib/python3.7/site-packages/flask/sessions.py", line 103, in _fail
    "The session is unavailable because no secret "
RuntimeError: The session is unavailable because no secret key was set.  Set the secret_key on the application to something unique and secret.

我对代码的期望是它能够完全运行。我没有包括这两个HTML文件,因为我认为它们没有关系。如果您认为是的话,我可以添加它。

使用:Python 3.7.7;烧瓶1.1.2;

python flask flask-login secret-key flask-session
1个回答
0
投票

正如@Harmandeep Kalsi在评论中所说,我添加了app.config['SESSION_TYPE']并且它起作用了。

© www.soinside.com 2019 - 2024. All rights reserved.