python – 使用Flask-Session扩展未在flask会话中设置密钥
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用Flask-Session扩展未在flask会话中设置密钥,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4198字,纯文字阅读大概需要6分钟。
内容图文
现在我正在使用烧瓶第三方库Flask-Session,我没有运气会议工作.
当我连接到我的网站时,我收到以下错误:
RuntimeError: the session is unavailable because no secret key was
set. Set the secret_key on the application to something unique and
secret.
下面是我的服务器代码.
from flask import Flask, session
from flask.ext.session import Session
SESSION_TYPE = 'memcache'
app = Flask(__name__)
sess = Session()
nextId = 0
def verifySessionId():
global nextId
if not 'userId' in session:
session['userId'] = nextId
nextId += 1
sessionId = session['userId']
print ("set userid[" + str(session['userId']) + "]")
else:
print ("using already set userid[" + str(session['userId']) + "]")
sessionId = session.get('userId', None)
return sessionId
@app.route("/")
def hello():
userId = verifySessionId()
print("User id[" + str(userId) + "]")
return str(userId)
if __name__ == "__main__":
app.secret_key = 'super secret key'
sess.init_app(app)
app.debug = True
app.run()
如您所见,我确实设置了应用程序密钥.我究竟做错了什么?
还有其他会话选项吗?
其他信息:
在Linux Mint上运行Python 2.7
全贴:
Traceback (most recent call last):
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/sean/code/misc/session/sessiontest.py", line 27, in hello
userId = verifySessionId()
File "/home/sean/code/misc/session/sessiontest.py", line 16, in verifySessionId
session['userId'] = nextId
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/werkzeug/local.py", line 341, in __setitem__
self._get_current_object()[key] = value
File "/home/sean/code/misc/hangman/venv/lib/python2.7/site-packages/flask/sessions.py", line 126, in _fail
raise RuntimeError('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.
解决方法:
在您的情况下,NullSessionInterface会话实现引发了异常,这是使用Flask-Session时的默认会话类型.那是因为你实际上并没有将SESSION_TYPE配置赋予Flask;将它设置为模块中的全局是不够的. Flask-Session quickstart example code确实设置了全局,但是通过调用app.config.from_object(__ name__)将当前模块用作配置对象.
对于Flask 0.10或更新版本,此默认值没有多大意义; NullSession可能对Flask 0.8或0.9有意义,但在当前版本中,flask.session.NullSession class用作错误信号.在您的情况下,它现在给您错误的错误消息.
将SESSION_TYPE配置选项设置为其他选项.选择redis,memcached,filesystem或mongodb中的一个,并确保在app.config中设置它(直接或通过various Config.from_* methods).
对于快速测试,将其设置为文件系统是最简单的;有足够的默认配置可以在没有其他依赖项的情况下完成工作:
if __name__ == "__main__":
app.secret_key = 'super secret key'
app.config['SESSION_TYPE'] = 'filesystem'
sess.init_app(app)
app.debug = True
app.run()
如果您看到此错误而您没有使用Flask-Session,那么设置秘密就会出错.如果你在if __name__ ==“__ main__”中设置app.config [‘SECRET_KEY’]或app.secret_key:如上所述,你得到这个错误,那么你可能正在通过导入你的WSGI服务器运行你的Flask应用程序Flask项目作为模块,__name__ ==“__ main__”块永远不会运行.
无论如何,总是更好到manage configuration for Flask apps in a separate file.
内容总结
以上是互联网集市为您收集整理的python – 使用Flask-Session扩展未在flask会话中设置密钥全部内容,希望文章能够帮你解决python – 使用Flask-Session扩展未在flask会话中设置密钥所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。