2009-09-29 49 views
6

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

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

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

+0

对于大多数任务来说权限已经不够吗?管理员只是具有适当权限的用户。如果你不需要微调权限,那么甚至还有'user.is_staff' /'user.is_superuser'。 – drdaeman 2009-09-29 20:05:50

+0

看来我的问题还不清楚,我通过添加更多细节和细节来编辑我的问题,希望更清楚。感谢您的见解/帮助。 – Dan 2009-09-30 00:54:36

回答

1

如果我正确理解你的问题(也许我没有),我想你是问如何为非管理员用户创建一个单独的登录表单,同时仍然使用标准的Django认证机制User模型,等等。这是由Django通过django.contrib.auth.views中的视图本地支持的。

你想从django.contrib.auth.views.login开始。一个行添加到你的URLconf像这样:

(r'^/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}) 

login通用视图接受template_name参数,这是路径到您的自定义登录模板(有一个通用的一个,你可以使用,以及通过django.contrib.auth提供) 。

有关login,logout,password_change和其他通用视图的完整文档可在Django Authentication Docs中获得。

0

稍微修改一下,让用户在他们的用户名上有一个类别前缀?你没有给我们很多关于你想做什么的信息,有可能你的需求可以通过使用网站框架来满足,或者只需两个单独的django安装。

如果您要做的是将用户登录页面和管理员登录页面分开,只需使用文档中详细介绍的内置框架创建“用户”登录页面并单独保留管理员。如果你担心用户会以某种方式开始编辑管理员登录信息,那么不要这样做,除非你允许,否则他们不会。

1

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