Python CGI:持久化会话密钥

时间:2015-10-24 13:48:27

标签: python cgi

这里总新手!

我正在尝试使用它的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”与服务器进行身份验证并生成会话密钥。运行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仍然是更好的选择吗?

谢谢大家。

1 个答案:

答案 0 :(得分:0)

使用Flask和内置的“会话”模块,我能够这样做:

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)

感谢您的帮助!