Django中单独的管理员/用户身份验证系统

时间:2009-09-29 19:41:27

标签: python django authentication

我最近开始学习/使用django;我正试图找到一种方法为管理员和用户提供两个独立的身份验证系统。我不想创建一个全新的auth系统,而是想利用django的内置功能(即会话管理,@ login_required装饰等)。

具体来说,我想要两个单独的登录表 - 一个用于管理员,一个用于用户。 admin登录表应该是django使用其默认字段生成的默认表(即id, username, email, is_staff, etc.)。另一方面,我希望用户表只有只有5个字段 - id, email, password, first_name, last_name。此外,我想对登录表和@login_required装饰器使用django内置会话管理来获取各自的视图。最后,我想为管理员和用户提供两种独立且不同的登录表单。

任何人对如何实现我的目标或知道任何可以帮助我的文章/示例有任何建议?

3 个答案:

答案 0 :(得分:1)

您可以编写一个或多个自定义身份验证后端。记录在案here。例如,我编写了一个自定义后端来对LDAP服务器进行身份验证。

答案 1 :(得分:1)

如果我正确地理解了您的问题(也许我没有),我想您正在询问如何为非管理员用户创建单独的登录表单,同时仍然使用标准的Django身份验证机制{{1} Django通过User中的视图原生支持这种模式等。

您想从django.contrib.auth.views开始。像你这样在你的urlconf中添加一行:

django.contrib.auth.views.login

(r'^/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}) 通用视图接受login参数,该参数是自定义登录模板的路径(您可以使用的通用参数由template_name提供)。

django.contrib.auth中提供了有关loginlogoutpassword_change以及其他一般视图的完整文档。

答案 2 :(得分:0)

稍微修改一下内容,以便用户的用户名上有类别前缀?您没有向我们提供有关您想要做什么的大量信息,可能通过使用站点框架或仅仅两个单独的django安装来满足您的需求。

如果您要做的是将用户登录页面和管理员登录页面分开,只需使用文档中详述的内置框架来创建“用户”登录页面并让管理员单独使用。如果你担心用户会以某种方式开始编辑管理员登录的东西,不要这样,除非你让他们,否则他们不会。