Djangoの認証モジュールでリフレッシュ

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换成你自定义的表单名称

おすすめ

転載: www.cnblogs.com/pythonywy/p/11483464.html