这里总新手!
我正在尝试使用它的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仍然是更好的选择吗?
谢谢大家。
答案 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)
感谢您的帮助!