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的认证系统的主要内容,如果未能解决你的问题,请参考以下文章