Sky*_*kye 4 python apache session wsgi flask
我有几个使用 WSGI 在我的 apache 服务器上运行的 python 3.6 Flask 应用程序。
有 2 个不同的应用程序在同一个 apache 服务器上运行:
www.example.com/lodge
www.example.com/dashboard
这两款应用程序都有其独特之处app.secret_key
该/dashboard应用程序是一个 Flask 应用程序,有自己的一组路由:
/dashboard/login
/dashboard/orders
/dashboard/staff
登录路由调用session.clear()并让用户输入登录信息。然后,登录的令牌将存储在会话变量中。
和路由都有一个装饰器,用于检查会话中登录令牌是否存在,如果不存在则重定向到登录路由/dashboard/orders。dashboard/staff
该/lodge 应用程序是另一个简单的 Flask 应用程序,有自己的路由:
/lodge/welcome
/lodge/personal
/lodge/review
/lodge/confirmation
欢迎路由也会调用session.clear(),然后显示一个 Web 表单。当用户提交 Web 表单时,personal将调用将这些 Web 表单输入值存储到会话中的路由。
我遇到的问题是,如果我导航到www.example.com/dashboard/login并登录,然后我可以在工作人员和订单路线之间滑动,一点问题都没有,但是当我打开一个新选项卡并转到www.example.com/lodge/welcome(然后调用session.clear)然后重新打开仪表板时选项卡并尝试转到员工或订单路线,由于会话已被清除,我被重定向回登录路线。
httpd.conf:
<VirtualHost *:80>
WSGIScriptAlias /newapp "c:/lodge/lodge.wsgi"
<Directory "c:/lodge">
Require all granted
</Directory>
WSGIScriptAlias /dashboard "c:/dashboard/dashboard.wsgi"
<Directory "c:/dashboard">
Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
旁注,如果我访问仪表板应用程序http://example.com/dashboard和旅馆应用程序,则不会发生这种情况http://www.example.com/lodge
在这里回答我自己的问题。
通过更改两个应用程序的应用程序配置,我很容易在同一个 apache 服务器上实现了多个应用程序。无需虚拟环境或修改 wsgi 脚本!
旅馆应用程序:
app = Flask(__name__)
app.config.from_object(__name__)
app.config.update(
SESSION_COOKIE_NAME = 'session_lodge',
SESSION_COOKIE_PATH = '/lodge/'
)
Run Code Online (Sandbox Code Playgroud)
仪表板应用程序:
app = Flask(__name__)
app.config.from_object(__name__)
app.config.update(
SESSION_COOKIE_NAME = 'session_db',
SESSION_COOKIE_PATH = '/dashboard/'
)
Run Code Online (Sandbox Code Playgroud)
@m-dennis 和 @burhan-khalid 的回答提供了对这个问题的一些见解,所以感谢!
拥有多个子域对我来说不是一个选择,当两个应用程序在自己的虚拟环境中运行时,我遇到了同样的问题。
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |