Проблема перенаправления Google App Engine - PullRequest
0 голосов
/ 03 декабря 2010

Я пытаюсь создать скрипт проверки пользователя, который перенаправляет пользователя, если пароль и куки-файлы с именем пользователя пустые или ложные.Но независимо от того, что я делаю, он всегда отправляет пользователя в «/ неправильный2».Он даже не проверяет, если.Вот как выглядит код на данный момент:

        dictionary = self.request.str_cookies
    if hasattr(dictionary, 'password') and hasattr(dictionary, 'username'):
        checkq = db.GqlQuery("SELECT * FROM Users WHERE username = :1 AND password = :2", dictionary['username'], dictionary['password'])
        checkresult = checkq.get()
        if checkresult.username and checkresult.password is None:
            self.redirect("/wrong")
    else:
        self.redirect("/wrong2")

Я очень новичок в python и пытаюсь его изучить, и я просто не могу найти, где ошибкаКто-нибудь может увидеть, где это?

1 Ответ

2 голосов
/ 04 декабря 2010

Вы используете hasattr, чтобы проверить, содержит ли dict определенный ключ, но вместо этого вы должны использовать оператор in. Функция hasattr просто проверяет, имеет ли объект определенный атрибут.

Итак, вместо этого вы могли бы написать:

if 'username' in self.request.cookies and 'password' in self.request.cookies:
    # check against the datastore

Но я думаю, что немного лучше будет такой подход, который гарантирует, что пустые имена пользователей или пароли (думаю, username = '') не будут впущены:

# will be None if the cookie is missing
username = self.request.cookies.get('username') 
password = self.request.cookies.get('password')

# This makes sure that a username and password were both retrieved
# from the cookies, and that they're both NOT the empty string (because
# the empty string evaluates to False in this context)
if username and password:
    # check against the datastore
else:
    self.redirect("/wrong2")
...