我只是想附和一下,因为上面发布的演示代码有潜在的SQL注入问题。我知道已经有一段时间了,你现在可能已经修好了。在
我的代码与第二种方法非常相似:class Login(object):
def GET(self):
return render_template('login/login.html')
def POST(self):
data = web.input()
try:
username = data.username
# All passwords are stored hashed!
password = hashlib.sha224(data.password).hexdigest()
result = db.select("users",
vars = dict(username=username, password=password),
what = 'id',
where = "username=$username and password=$password")
if len(result) != 0:
web.ctx.session.userid = result[0].id
web.ctx.user = UserModel(result[0].id)
return web.seeother('/')
except Exception, e:
return render_template('login/login.html',errors=["Bad user/pass"])
在生产过程中,我实际上在vars dict中有更多的键,比如isactive。我也会记录任何异常。我使用Jinja作为模板引擎,这就是为什么我的回答与你的有所不同。在