https://docs.djangoproject.com/zh-hans/2.0/topics/auth/default/#authentication-in-web-requests
django认证模型系统是django自带,默认配置文件在settings.py文件当中。这个项目在INSTALLED_APPS
setting里面由两个部分组成,分别是:
-
'django.contrib.auth'
包含了认证框架的核心模块, 是默认的模型。 -
'django.contrib.contenttypes'
是django的内容类型系统, 这个会允许你连接你创建的模型。
这是你的中间件配置:
-
SessionMiddleware
manages sessions across requests. -
AuthenticationMiddleware
associates users with requests using sessions.
一、创建超级用户
$ python manage.py createsuperuser --username=joe --email=joe@example.com
更改密码
from django.contrib.auth.models import User u = User.objects.get(username='john') u.set_password('new password') u.save()
# 这里的User是django默认创建的用户表,如果用到自己定义的表,这里需要更改,更改后的表含有User表所有的方法。
检查密码
auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。
密码正确返回True,否则返回False。
用法:
ok = user_obj.check_password('密码')
或者
ok = request.user.check_password(raw_password='原密码')
一个简单的修改密码功能的事例:
@login_required def set_password(request): user = request.user err_msg = '' if request.method == 'POST': old_password = request.POST.get('old_password', '') new_password = request.POST.get('new_password', '') repeat_password = request.POST.get('repeat_password', '') # 检查旧密码是否正确 if user.check_password(old_password): if not new_password: err_msg = '新密码不能为空' elif new_password != repeat_password: err_msg = '两次密码不一致' else: user.set_password(new_password) user.save() return redirect("/login/") else: err_msg = '原密码输入错误' content = { 'err_msg': err_msg, } return render(request, 'set_password.html', content) 修改密码示例
View Code
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django使用auth模块进行身份认证 - Python技术站