为什么登录前session ['logged_in'] == True?

时间:2018-08-23 06:22:05

标签: python flask

我正在尝试将基于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'))

2 个答案:

答案 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