Python CGI:持久化会话密钥

Python CGI: Persistence with Session Keys

这里完全是新手!

我正在尝试使用 API 为 SUSE Manager 创建一个简单的 Web 界面。我遇到的问题不是 SUSE Manager,而是 CGI。现在,我只想完成两件事:

1) 用户输入 SUSE Manager 的用户名和密码的登录屏幕。

2) 登录后,用户有多个链接用于 运行 应用程序的不同 API 调用。

在 index.html 文件中,我有用于登录并将用户名和密码值提交给 "auth.py" 的表单。

<html>
<title>Login</title>a/
<body> 
<b>SuSE Manager Tools</b><br /><br />
<form action="/cgi-bin/auth.py" method="POST">
Username: <input type="text" name="username">
Password: <input type="password" name="password"><br /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>

然后 "auth.py" 通过服务器进行身份验证并生成会话密钥。当 运行ning API 程序调用时,此密钥将用于以后的所有身份验证。

#!/usr/bin/python2.7
import cgi, cgitb, xmlrpclib, os
print "Content-type: text/html\r\n\r\n"
cgitb.enable()
form = cgi.FieldStorage()
MANAGER_URL = "http://susemanager"
MANAGER_LOGIN = form.getvalue('username')
MANAGER_PASSWORD = form.getvalue('password')
client = xmlrpclib.Server(MANAGER_URL, verbose=0)
key = client.auth.login(MANAGER_LOGIN, MANAGER_PASSWORD)

现在我有一堆单独的“.py”文件,运行 这些过程调用。在这一点上,我会向用户提供几个指向 运行 指定过程的链接。我的问题是,将这些会话密钥传递给 .py 文件以便它们可以针对服务器进行身份验证的好方法是什么?

也许我做错了?也许 CGI 不是答案。现在似乎有很多围绕 CGI 的争论不是最好的选择,而且它已经过时了。也许我应该研究 WSGI,或者您认为对于如此简单的事情,CGI 仍然是更好的选择?

谢谢大家。

使用 Flask 和内置的 'session' 模块,我能够像这样完成这项工作:

from flask import Flask, render_template, session, request, redirect, url_for
import xmlrpclib
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
            session['user'] = request.form['username']
            session['passwd'] = request.form['password']
            return redirect(url_for('menu'))        
    return render_template('login.html')
@app.route('/menu/')
def menu():
    user = session.get('user', None)
    passwd = session.get('passwd', None)

感谢您的帮助!