Skip to content
武祥晋 edited this page Nov 13, 2013 · 3 revisions

Django自带的用户验证系统,支持用户、群组、权限、注册、登入登出,包含预定义的view和form但是没有template。

-INSTALLED_APPS

  • django.contrib.auth

  • django.contrib.contenttypes

  • MIDDLEWARE_CLASSES

  • SessionMiddleware

  • AuthenticationMiddleware

  • Using Django’s default implementation

  • Working with User objects

  • Permissions and authorization

  • Authentication in web requests

  • Managing users in the admin

  • API reference for the default implementation

  • Customizing Users and authentication

  • Password management in Django

用户对象

创建用户、更改密码、验证用户名密码

权限与授权

布尔值,可对用户或组设置,可对一个实例而非类设置

HTTP请求中的用户验证

变量request.user,用is_authenticated()判断是否登录。

登录先authenticate()再login(),登出logout()。

访问限制:@login_required,@user_passes_test,@permission_required

预置的view:login,logout,logout_then_login,password_change,password_change_done,password_reset,password_reset_done,password_reset_confirm,password_reset_complete

函数:redirect_to_login

预置的form:AdminPasswordChangeForm,AuthenticationForm,PasswordChangeForm,PasswordResetForm,SetPasswordForm,UserChangeForm,UserCreationForm

template中的调用:user,perms

自定义Auth系统

外部验证

像学校网络学堂和信息门户共用一套密码,我们用不到

自定义权限

在Model里嵌套定义类Meta。 @tadpole 自行决定。

扩展User Model

四种方式:proxy,one-to-one,AUTH_PROFILE_MODULE,substitute。

  • proxy:只能增加行为,不能增加实际存储的字段。
  • one-to-one:自定义一个Profile Model,存储与验证无关的个人信息。
  • AUTH_PROFILE_MODULE:在Django 1.5中被弃用!
  • substitute:高级功能,如用邮箱取代用户名,我们不用。

综上,建议 @tadpole 使用ont-to-one。