我正在尝试将基于session['logged_in']
登录的用户和其他用户重定向到登录页面,但是出于某种原因,session['logged_in']
甚至在我登录之前就为True。怎么了?
app = Flask(__name__)
# Check for environment variable
if not os.getenv("DATABASE_URL"):
raise RuntimeError("DATABASE_URL is not set")
# Configure session to use filesystem
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)
# Set the secret key
app.secret_key = os.urandom(24)
# Set up database
engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))
@app.route('/')
def main():
if session.get('logged_in') is True:
return redirect(url_for('search'))
else:
return redirect(url_for('login'))
答案 0 :(得分:0)
如果您在登录之前没有会话@app.route('/')
def main():
if session.get('logged_in'):
return redirect(url_for('search'))
else:
return redirect(url_for('login'))
,并且在注销后被删除,则应尝试:
{{1}}
答案 1 :(得分:0)
设置会话时,只要会话存在,logged_in=True
也会保留在其中。
您应该提供logout
路由,或者以某种方式提供pop
来自会话的logged_in
。
session.pop('logged_in', None)
请注意,您应该提供None
的默认值,因此,如果未登录的用户尝试注销,则不会获得KeyError
。如果使用烧瓶,如果您尝试从pop
字典中session
来获取一个值并且该键不存在,则会得到一个KeyError
。