2015-10-24 1 views
1

Total novice ici! J'essaie de créer une interface web simple pour SUSE Manager en utilisant son API. Le problème que je rencontre n'est pas vraiment avec SUSE Manager, mais avec CGI. En ce moment, je veux simplement accomplir deux choses à l'heure actuelle:CGI Python: persistance avec les clés de session

1) Connectez-vous à l'écran où l'utilisateur entre son nom d'utilisateur et mot de passe pour SUSE Manager. 2) Après s'être connecté, l'utilisateur a plusieurs liens pour exécuter différents appels d'API pour l'application.

Dans le fichier index.html, j'ai les formulaires pour me connecter et soumettre les valeurs de nom d'utilisateur et de mot de passe à "auth.py". Le "auth.py" s'authentifie ensuite auprès du serveur et génère une clé de session. Cette clé sera utilisée pour toute l'authentification à venir lors de l'exécution des appels de procédure API. Maintenant, j'ai un tas de fichiers '.py' individuels qui exécutent ces appels de procédure. Je voudrais présenter à l'utilisateur plusieurs liens pour exécuter des procédures spécifiques. Ma question est, quelle est une bonne méthode de passer ces clés de session aux fichiers .py afin qu'ils puissent s'authentifier sur le serveur?

Peut-être que je vais à ce sujet tout faux? Peut-être que CGI n'est pas la réponse. Il semble y avoir beaucoup de centres d'intérêt autour de CGI qui ne sont pas le meilleur choix de nos jours et qui sont devenus désuets. Peut-être que je devrais regarder WSGI ou pensez-vous que pour quelque chose de si simple, CGI reste la meilleure option?

Merci à tous.

+0

Oui, utilisez un framework wsgi simple comme Flask; il existe différentes bibliothèques de sessions disponibles. –

+0

Merci Daniel, je vais jeter un coup d'oeil à Flask. – azurepancake

Répondre

0

En utilisant Flask et le module « session » intégré, j'ai pu obtenir ce fait comme ceci:

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) 

Merci pour l'aide!