J'écris une petite application en bouteille. J'ai un problème conceptuel aidez-moi à le résoudre

StackOverflow https://stackoverflow.com/questions/4289115

  •  28-09-2019
  •  | 
  •  

Question

from bottle import  route, run, debug, error, request, template

@route('/home')
@route('/home/')
def login():
    return template('templates/login')

@route('/home', method='POST')
@route('/home/', method='POST')
def welocme():
    data = request.POST
    if data:
        password = data.get('password')
        check_pass = 'password'
        if password == check_pass:
            return template('templates/welcome')
        else:
            return template('templates/login')
    else:
        return template('templates/login')

Mon exigence est: j'obtiendrai une page de connexion et d'accueil sur la même URL. La page de connexion n'a qu'un seul champ de mot de passe.

Mon problème: si j'obtiens une connexion et je vais à nouveau sur la page d'accueil sur rafraîchissant, il m'envoie sur la page de connexion. Mais idéalement, il ne devrait être que sur la page d'accueil.

@error(404)
def error404(error):
    return 'http://google.com'

Mon deuxième problème: je veux rediriger une URL particulière sur 404.

Était-ce utile?

La solution

Si l'utilisateur va à la page "/ Accueil", ne voulez-vous pas vérifier s'il est connecté avant de les montrer l'écran de connexion? Il semble que vous supposiez qu'ils ne sont pas déjà connectés si la méthode HTTP n'est pas publiée.

Je ne sais pas grand-chose sur votre cadre, mais je suppose que si la connexion est réussie, vous devez définir un cookie, puis vous devriez vérifier le cookie pour HTTP pour voir si l'utilisateur est authentifié.

Autres conseils

Votre deuxième question est répondue ici.

Vous pourriez également vouloir jeter un œil Séances de biscuits de Beaker et utilisez-le pour garder l'état de votre demande entre les demandes.

Si je comprends correctement la question, la seule façon de rendre le modèle de bienvenue est via le post.

Vous pouvez modifier cela afin que les demandes soient de vérifier si quelqu'un est connecté. Si cela échoue, redirigez-le vers la page de connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top