我正在尝试创建一个登录页面,如何通过我的用户名和密码并将其引导到重定向的网站?

时间:2014-11-21 01:04:35

标签: python html google-app-engine login login-script

目前,我正在努力使我的登录页面无需使用javascript即可运行。这是我的代码的html表单。

<form name="login" action="secure112020014431.html" method="get" onsubmit="return validate(this);" accept-charset="utf-8" > <ul> <li> <label for="user_account"></label> <div> <input type="text" name="username" placeholder="Your Username" required> </div> </li> <li> <label for="password"></label> <div> <input type="password" name="password" placeholder="Password" required> </div> </li> <br></br> <li> <input id="login" type="submit" name="submit" value="Fazer Login"> </li> </ul> </form>

这是我的main.py文件

    import webapp2
    import os
    import jinja2
    import urllib2

    jinja_environment = jinja2.Environment(autoescape=True,
      loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__))))

    class SignIn(webapp2.RequestHandler):
      def get (self):
        template = jinja_environment.get_template('signin.html')
        self.response.write(template.render())  
    class Secure(webapp2.RequestHandler):   
      def get(self):
        """
        username: Get the username from POST dict
        password: Get the password from POST dict
        """
        username = self.request.POST.get('username')
        password = self.request.POST.get('password')
        # Try to login user with password
        key='admin'
        passkey='password'
        if username and password==key and passkey:
          template = jinja_environment.get_template('secure112020014431.html')
          self.response.write(template.render())    
        else:
          template = jinja_environment.get_template('signin.html')
          self.response.write(template.render('/signin.html'))
     application = webapp2.WSGIApplication([
                                    (,('/signin.html',SignIn)
                                    ,('/secure112020014431',Secure)
                                    ], debug=True)

这是我的app.yaml

- url: /secure112020014431
  script: main.application
  login: required

- url: /.*
  script: main.application

我想要做的就是这个。 将表单中的信息传递给我的main.py文件。 然后,我的main.py接收信息并将其与密钥和密钥进行比较。 如果条件满足,请带我到安全页面,如果没有,请将我发回主页。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题(或至少 问题)在这里:

if username and password==key and passkey:

username and password没有给你一对可以与另一对物体比较的物体;如果两个对象都是真实的,那么它会给你一个单一的价值。

创建一对可以与另一对对象进行比较的对象的方法是创建一个元组,只需在它们之间加上逗号即可:

if (username, password) == (key, passkey):

或者,当然,您可以在两个单独的检查之间使用and

if username == key and password == passkey:

作为旁注,这种事情通常是一个非常糟糕的主意。以纯文本形式发送用户名和密码作为表单的一部分意味着任何可以查看数据包的人都可以窃取密码。通常的方法是使用challenge-response protocol。如果您不想自己实现,可以使用HTTP内置的机制,或者您可以依赖外部身份验证(例如,任何能够证明他拥有已批准的OpenID帐户列表之一的人都可以接受),或者您可能会找到包装它的JS和Jinja / Python库。