0907自己概要
Djangoの認証モジュールでリフレッシュ
from django.contrib import auth
セット
デフォルト認証フォーム
auth
デフォルトでは、ビルトインを使用することでuser
、フォームを
カスタムフォーム認証
であることが必要settings.py
占いDjango
、私は今、私の新しく定義された使用UserInfo
ユーザ認証を行うためのテーブルを。次のように言葉を選びました:
# 引用Django自带的User表,继承使用时需要设置
AUTH_USER_MODEL = "app名.UserInfo"
ではmodles.py
、フォームモデルを作成することができAbstractUser
、我々は、ユーザ認証に付属しているソースコードでそれを見ることができるのでから継承する継承された表現AbstractUser
クラスはまた、我々はその後、彼のためのコンテンツをカスタマイズすることができ、すべてを継承することができます
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
新增的内容
通过源码我们可以看出自带的几个内容
AbstractUser
内蔵フィールド
源码里的内容
username :账号
first_name:姓
last_name:名
email:邮箱
is_staff : 用户是否拥有网站的管理权限.
is_active: 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录。
date_joined:创建日期
彼の親を見てくださいAbstractBaseUser
password:密码
last_login:最后一次登入时间
is_active:是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录。
彼の他の親を見てくださいPermissionsMixin
is_superuser:是否为超级账号也就管理员
groups:分组
user_permissions:用户权限
私たちは、その後、これに基づいて追加することができます
II。登録関連
通常のユーザーを作成します。
create_user()
新しいユーザ認証オファーを作成する方法、そうで必要なパラメータ(ユーザ名、パスワード)とを提供することが必要です。
使用法:
from django.contrib.auth.models import User
user = User.objects.create_user(username='用户名',password='密码',email='邮箱',...)
スーパーユーザを作成します
create_superuser()
新しいスーパーユーザーの認証を作成すると、その上で必要なパラメータ(ユーザ名、パスワード)とを提供する方法を提供します。
使用法:
from django.contrib.auth.models import User
user = User.objects.create_superuser(username='用户名',password='密码',email='邮箱',...)
III。ログイン関連
ログインを確認します
authenticate()
つまり、ユーザー名とパスワードが正しいことを確認するために、ユーザ認証機能を提供し、それは通常、ユーザー名、パスワード二つの重要なパラメータを取ります。
認証は(有効なユーザー名とパスワードが正しい)に成功した場合、それはユーザーオブジェクトを返します。
()認証ユーザがユーザを認証した識別するために、オブジェクトの後端にプロパティを設定し、それ以降の処理において、ログイン情報が必要です。
使用法:
user = authenticate(username='usernamer',password='password')
ログイン要求内に格納されているオブジェクト
login(HttpRequest, user)
この関数は、HttpRequestを対象と認定され、ユーザーオブジェクトを受け取ります。
この機能は、ユーザーのログイン機能を実装しています。本質的には、後端部にユーザーのセッション関連のデータを生成します。
使用法:
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
# Redirect to a success page.
...
else:
# Return an 'invalid login' error message.
...
この設定の後に直接することができますrequest.user
ことを指摘账号相关信息
is_authenticated
ありますTrue
ログイン要求の除去に格納されているオブジェクト
logout(request)
この関数は、HttpRequestのオブジェクト、ノーリターン値をとります。
関数が呼び出されると、現在の要求は、すべてのセッション情報をクリアします。ユーザーがログインしていない場合であっても、また文句はありません。この機能を使用しています。
使用法:
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
これは、直接設定した後request.user
、空に
is_authenticated
ありますFalse
認定により、
is_authenticated()
現在の要求が認定するかどうかを判断するために使用します。
使用法:
def my_view(request):
if not request.user.is_authenticated():
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
ページの操作
{% if request.user.is_authenticated %}
如果里面有通过验证的user就为真没有就没否
IV。ログインデコレータ
login_requierd()
認証は、ビューにチェックを追加する簡単なログインのための装飾的なツールを提供してくれます。
使用法:
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
...
ユーザーがログインしていない場合は、DjangoのデフォルトのログインURLにジャンプ「/アカウント/ログイン/」と(成功着陸した後、パスにリダイレクトされます)絶対パスにアクセスするには、現在のURLを渡します。
あなたは、ログインURLをカスタマイズしたい場合は、settings.pyファイルにLOGIN_URLによって変更する必要があります。
例:
LOGIN_URL = '/login/' # 这里配置成你项目登录页面的路由
V.パスワード
検査のパスワードが正しいですか
check_password(password)
パスワード認証のオファーかどうかを確認する正しい方法は、現在のリクエストのユーザーのパスワードを提供する必要があります。
パスワードが正しいリターン真、そうでなければFalseです。
使用法:
ok = user.check_password('密码')
パスワードの変更
set_password(password)
AUTHによって提供されたパスワードを変更する方法は、パラメータとして設定される新しいパスワードを受け取りました。
注意:ユーザーオブジェクトの保存メソッドを呼び出してください設定した後!!!
使用法:
user.set_password(password='')
user.save()
VI。注
上面的写的都是基于auth自带的user表达写的
インポート
from django.contrib.auth.models import User
それは、カスタムフォームしてくださいある場合user换成你自定义的表单名称