您知道,web应用程序需要会话或cookie来进行身份验证。我尝试用Vue.js和Flask微框架构建web应用程序,例如ERP或CRM。
我很困惑。如何使用会话?让我们假设我们在烧瓶中有这样的代码:
import os
from flask import Flask, request, jsonify, abort, session
app = Flask(__name__)
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY') or \
'e5ac358c-f0bf-11e5-9e39-d3b532c10a28'
@app.route('/login', methods=['POST'])
def user_login():
user = request.form['user']
session['isLogged'] = True
return jsonify({'status': session['isLogged']})
@app.route('/user-info')
def user_info():
if 'isLogged' in session:
return jsonify({'user': 'ali'})
else:
return jsonify({'error': 'Authentication error'})
而我们的前端代码应该是这样的:
mounted() {
this.checkIsLogged();
},
methods: {
checkIsLogged() {
fetch('http://127.0.0.1:5000/user-info', {
mode: 'no-cors',
method: 'GET',
}).then((resp) => {
return resp;
}).then((obj) => {
if(obj.user) {
this.status = true
}
})
},
login() {
let frmData = new FormData(document.querySelector("#frmLogin"));
fetch('http://127.0.0.1:5000/login', {
mode: 'no-cors',
method: 'POST',
body: frmData,
}).then((resp) => {
return resp;
}).then((obj) => {
this.status = obj.status
})
}
}
会话处理是你的水疗中心不太关心的事情。会话位于用户代理(浏览器)和服务器之间。您的vue应用程序与此没有太大关系。这并不是说你不能做错事,但通常问题不在你的前端。
话虽如此,但很难给出这个问题的答案,因为我们真的不知道出了什么问题。我所能做的是给你如何诊断这类问题的指导。在这个诊断过程中,你会发现真正的问题在哪里,至少对我来说,我需要做什么通常会变得很明显。
步骤1)
如果存在,则cookie现在必须存在于cookie存储区中。在chrome developer console中,转到“Application”选项卡,从左侧菜单展开Cookies,然后查看存在Cookie的主机。应该有一个cookie礼物,这是在之前的步骤中设置的。如果不是,浏览器不接受cookie。当您的cookie设置为特定的域或路径时,通常会发生这种情况,而这不是正确的域或路径。在这种情况下,可以尝试将域和/或路径设置为空或正确的值(如果路径是“/”)。如果您的cookie存在,请转到步骤3
3)
还记得我说过应用程序与会话无关吗。使用ajax或在浏览器中输入一个有效的URL,发送的每个请求都会在请求头中发送该主机的所有cookie。除非您主动阻止使用任何库这样做。如果您的请求不包含会话cookie,则下列情况之一通常为真:
问题内容: 我正在使用Flask的内置开发服务器来开发Flask应用程序。我使用Flask-Script启动它。我想切换为使用Gunicorn作为Web服务器。为此,我需要在Flask-Script和Gunicorn之间编写某种集成代码吗?还是Flask-Script与使用Gunicorn运行应用程序无关? 提前致谢! 到@ sean-lynch的道具。以下是根据他的回答而工作,经过测试的代码。我
问题内容: 在导入flask时,我们导入模块等。 是一种字典,可以使用会话进行访问。 现在,我尝试清除尝试构建网站时使用的所有垃圾变量。 关于stackoverflow的答案之一使用了类似清除会话内容的命令。但是,这样的命令会产生错误,表明不存在这样的命令。 谁能为我指出每次关闭服务器或关闭网站时如何清除和如何清除会话? 问题答案: 我将这样的会话与flask一起使用,它确实起作用。我虽然不使用,
问题内容: 我已经安装了Apache服务器,并且正在通过mod_wsgi处理Flask响应。我已经通过别名注册了WSGI脚本: [httpd.conf] 我在上面的路径中添加了相应的WSGI文件: [/mnt/www/wsgi-scripts/service.wsgi] 我有一个简单的Flask Python测试脚本,提供了服务模块: [/mnt/www/wsgi-scripts/service.
问题内容: 好的,所以我已经安装了Flask,我想知道如何将MongoDB数据库与即将开始构建的Flask应用程序连接和使用。 问题答案: 我个人发现PyMongo库简单易用。 你首先需要导入并创建一个连接: 然后获取你的数据库实例和集合(表): 然后,你可以通过处理保存数据的JSON文档来操纵数据。他们的网站上有完整的示例。
问题内容: 我试图用一个烧瓶形式的sqlalchemy请求的结果填充选择字段。 这是代码: 这是模板: 查看: 模型(仅粘贴了关联表和作者表,很多列都不用了) 我目前收到此错误: 我真正想要的是select字段显示作者姓名及其编号,然后将作者编号返回到应用程序(返回到头上名为“ add_author”的函数)。 问题答案: 你有两个问题: 正如肖恩·维埃拉(Sean Vieira)在回答中指出的那
问题内容: 如何在Flask中创建一个新的干净会话并使当前会话无效? 我使用还是? 问题答案: 我使用这种方法尽可能解决了这个问题*: 覆盖,从覆盖版本复制代码,而不是调用它。 当覆盖版本的,使其在分钟后传递一个参数。这会导致超过30分钟的Cookie无效。 经常使更新的覆盖版本成为会话变量,以确保cookie及其时间得到定期重写。(我将这个会话变量命名为并在其中存储当前时间,然后仅在自上次存储的