我在Django 1.7中编写自定义身份验证后端,但由于以下两个原因之一,它可能会失败:凭据无效或某种内部错误,例如:数据库问题。根据失败,我想向用户提供不同的错误消息。 IE"用户名或密码不正确"对于无效凭据,以及类似"发生错误,请重试或联系支持"。
由于authenticate()
需要返回用户模型,因此我无法返回错误,因此我想知道的是:将错误冒出的最佳方法是什么?查看名为authenticate()
的内容?
我倾向于使用相应的错误消息从authenticate()
抛出异常,然后在视图中捕获该异常。我认为这是处理它的最佳方式,但是我与Django专家相距甚远,所以我很想听听社区的想法。
在这里抛出异常是我最好的选择,还是有更好的方法将身份验证失败从authenticate()
冒出来到视图?如果抛出一个异常是我最好的选择,是否有一个适合该法案的预定义Django异常,或者我应该自己制作?
答案 0 :(得分:0)
在自定义方法中,首先使用try except
,您可以捕获数据库错误
在自定义方法中,用户对象将具有check_password
方法
>>> try:
user = User.objects.get(email='lennon@thebeatles.com')
except:
print("error with connection")
然后使用check_password
方法,您将收到密码错误
>>> user = User.objects.get(email='lennon@thebeatles.com')
>>> user
<User: john>
>>> user.check_password('johnpassword')
True
>>>
答案 1 :(得分:0)
我最终在我的视图中使用了try / except块,其中包含代表相关故障的自定义错误。