这是我的模态类,用于跟踪用户尝试登录的时间。每次用户登录失败时,我都希望将尝试列字段增加1.什么是最好的方法。
我正在尝试现在这样做,但没有工作,并给我不同类型的错误。 根据电子邮件获取尝试列值的代码和成功登录后发生的状态=成功由于每次用户登录失败时尝试列都会加1。从中获取尝试次数。
@classmethod
def getAttemptCount(cls,email):
return DBSession.query(Logs.attempt).filter(and_(Logs.email==email,Logs.status=='success')).all()
以下是表格定义
from .meta import Base
from sqlalchemy import (
Column,
Index,
Integer,
Text,
Unicode
)
class Logs(Base):
__tablename__ = 'logs'
id = Column(Integer, primary_key=True)
email = Column(Unicode(255),nullable=False)
status=Column(Text,default='error')
attempt=Column(Integer,default=0)
最好的方法是什么
答案 0 :(得分:1)
这是我在登录视图中的内容,可能会让您了解如何执行此操作。
@view_config(route_name="login", request_method="POST", renderer="app:templates/app/login.mak")
def login_(request):
email = request.params.get('email')
password = request.params.get('password')
if form.validate(): #valid fields i.e. not empty
try:
user = DBSession.query(User).filter_by(email=email).one()
except NoResultFound:
return #no user found
if len(user):
if user.attempt > 10:
return #show captcha or something
if not user.check(password):
user.attempt +=1
return #redirect or return False
headers = remember(request, user.id)
user.attempt = 0 #could reset the attempt count if login successful
return HTTPFound(location=request.route_url('dashboard'), headers=headers)