首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用wfastcgi.py从Flask中读取IIS会话变量

用wfastcgi.py从Flask中读取IIS会话变量
EN

Stack Overflow用户
提问于 2018-04-13 20:37:05
回答 1查看 1.4K关注 0票数 1

我正在IIS7.0上用Flask 0.12构建一个安全的应用程序。该站点位于子域,因此它的urls都以以下开头:

代码语言:javascript
复制
https://<subdomain>.<domain>/<app_name>/

wfastcgi.py去掉这些前缀,只将路径名称传递给我的Flask应用程序。所以上面的网址将以路由/的形式呈现给我的应用程序。还有其他web应用程序(ASP.net和PHP)托管在同一个子域上,但具有不同的app_name常量。

因为我的用户需要在访问我的应用程序之前登录到服务器,所以我想使用他们的Windows域唯一的用户in来管理应用程序中的逐页权限。在ASP.NET中,我可以使用httpcontext来完成这个任务,但这在httpcontext中是不可用的。当我转储这样的会话内容时:

代码语言:javascript
复制
@app.route('/session_tester')
def session_test():
    return str(session)

我得到了一个空页作为回应。

如何从Flask应用程序访问IIS会话变量?我缺少一个配置变量吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 21:13:36

当用户通过IIS进行身份验证时,其用户名将出现在REMOTE_USER环境变量中。其他上下文信息也存储在不同的环境变量中。您可以配置哪些变量可供应用程序使用,但默认情况下,REMOTE_USER和其他几个变量应该在其中。

因此,您应该能够通过os.environ.get('REMOTE_USER')获得登录用户。

代码语言:javascript
复制
@app.route('/')
def index():
    username = os.environ.get('REMOTE_USER')
    template = "<h1>User: {{ username }}</h1>"
    return render_template_string(template, username=username)

如果您希望您的Flask会话知道用户会话,则需要让用户登录到Flask应用程序,而不是IIS。或者,您可以拥有一个中间件,它可以根据REMOTE_USER环境变量将用户登录到您的Flask应用程序中。例如,使用flask_login扩展应该可以实现这一点。

编辑:

还可以通过request代理对象访问环境变量。例如request.environ['REMOTE_USER']。另见request.authorization

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49824778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档