重写认证方法 - Django 管理后台
我正在想办法如何给认证方法增加一些额外的功能。
比如说:
- 密码过期
- 特殊的密码格式
- 长度要求
- 等等...
对于网站的前端来说,这个问题比较简单,但管理员面板呢?
我觉得我应该重写用户管理对象,因为认证功能可能就在那儿。我觉得这个问题挺难解决的。
提前谢谢大家!:)
2 个回答
0
如果你想把密码验证的功能直接放到模型里,那你可能需要扩展Django的用户模型。
如果不想这样做,你可以试试以下方法:
- 通过创建自己的视图来覆盖管理员的密码选项,这样可以更改和设置密码,然后把相关的URL放在
(r'^admin/', include(admin.site.urls))
的上面。正则表达式大概是(r'^admin/auth/user/(\d+)/password/', new_change_password)
。 - 在一个单独的模型中记录密码的使用时间,当密码过期时,自动跳转到修改密码的页面。
6
你可以按照这个链接中的说明来创建自定义的认证后端:http://docs.djangoproject.com/en/dev/topics/auth/#authentication-backends。简单来说,你需要创建一个后端类,这个类里面要有一个叫做 authenticate
的方法:
class MyBackend:
def authenticate(self, username=None, password=None):
# Check the username/password and return a User.
然后把这个类添加到 AUTHENTICATION_BACKENDS
里,位置是在 settings.py
文件中。
虽然这个是用来做认证的,但你也可以处理密码验证的事情,比如说如果用户的密码正确但过期了,你可以直接把他引导到一个修改密码的页面。你可以考虑使用 消息框架,这样在引导用户去修改密码页面的时候,可以给他一些提示,让他知道发生了什么。