Django的认证系统

Posted xiaole-7890

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django的认证系统相关的知识,希望对你有一定的参考价值。

auth模板

from django.contrib import auth

auth中提供了许多实用方法:

authenticate()

提供了用户认证功能,即认证用户以及密码是否正确,一般需要username、password两个关键字参数。

如果认证成功(用户名和密码正确有效),便会返回一个User对象。

authenticate()会在该User对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。

用法:

from django.contrib import auth
def login(request):
    if request.method == POST:
        username = request.POST.get(username)
        password = request.POST.get(password)
        obj = auth.authenticate(request,username=username,password=password)
        if obj:
            #记录登录状态
            auth.login(request,obj)
            #取到跳转后的url,赋值给next
            next = request.GET.get(next)
            #判断next是否取到值
            if next:
                return redirect(next)
            return redirect(/index/)
    #返回登录页面
    return render(request,login.html)

logout

该函数接收一个HttpRequest对象,无返回值.

当调用该函数时,当前请求的session信息会全部清除.该用户即使没有登录,使用该函数也不会报错.

用法:

from django.contrib.auth import logout
   
def logout_view(request):
  logout(request)
  # Redirect to a success page.

is_authenticated()

用来判断当前请求是否通过了认证.

用法:

 

def my_view(request):
  if not request.user.is_authenticated():
    return redirect(%s?next=%s % (settings.LOGIN_URL, request.path))

 

login_requierd()

auth给我们提供的一个装饰器工具,用来快捷的给某个视图添加登录校验.

用法;

from django.contrib.decorators import login_required

@login_required
def my_view(request)
    ...

若用户没有登录,则会跳转到django默认的登录URL‘/accounts/login/‘并传递当前访问url的绝对路径(登录成功后,会重定向到该路径).

如果需要自定义登录的URL,则需要在settings.py文件中通过LOGIN_URL进行修改.

示列:

LOGIN_URL = /login/  # 这里配置成你项目登录页面的路由

create_user()

auth提供的一个创建新用户的方法,需要提供必要参数(username、password)等。

用户:

 

from django.contrib.auth.models import User
user = User.objects.create_user(username=用户名,password=密码,email=邮箱,...)

 

create_superuser()

auth提供的一个创建新的超级用户的方法,需要提供必要参数(username、ppasswoed)等。

用法:

from django.contrib.auth.models import User
user = User.objects.create_superuser(username=用户名,password=密码,email=邮箱,...)

check_password(password)

auth提供的一个检查密码是否正确的方法,需要提供当前用户的密码。

密码正确返回True,否则返回False。

用法:

ok = user.check_password(密码)

 

 

 

 

 

 

 

 

 

 

以上是关于Django的认证系统的主要内容,如果未能解决你的问题,请参考以下文章

django扩展User认证系统

django 认证系统

Django用户认证

django认证系统

django认证系统 Authentication

django 认证系统--2