auth认证模块
1. 创建超级用户
命令行输入: python manage.py createsuperuser
from django.contrib import auth
2. auth.authenticate(username=username, password=pwd)
验证用户名和密码
如果验证成功,得到的是一个用户对象
如果验证失败,得到的是匿名用户
3. auth.login(request, user)
将验证过的用户 赋值给 request.user属性
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
实现代码如下:格外注意对象一致
1 from django.contrib import auth
2 def login(request):
3 if request.method=='POST':
4 user=request.POST.get('user')
5 pwd=request.POST.get('psd')
6 use=auth.authenticate(username=user,password=pwd)
7 auth.login(request,use)
8 if use:
9 return render(request,'welecome.html',{'user':use})
10 else:
11 return redirect('login.html')
12 return render(request,'login.html')
4. auth.logout(request)
request.session.flush()
将session数据都删除,并且Cookie也失效
1 def logout(request):
2 auth.logout(request)
3 return redirect('/login/')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>检查登录状态:
添加一个装饰器 @login_required()
from django.contrib.auth.decorators import login_required
1 @login_required()
2 def welcome(request):
3 print(request.user.username)
4 print(request.user.is_authenticated())
5 return render(request,'welecome.html')
同时还需要指定如果未登录状态,访问的地址,在seeting文件下面设置要访问的url
1 #如果没有登录,默认跳转到这个url
2 LOGIN_URL='/login/'
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
创建一个普通用户对象:
1 def register(request):
2 from django.contrib.auth.models import User
3 #创建一个用户对象
4 user_obj=User.objects.create_user(username='ccc',password='lisa123456')
5 #校验密码是否正确
6 ret=user_obj.check_password('lisa123456')
7 print(ret)
8 #修改密码
9 user_obj.set_password('nokia12138')
10 user_obj.save() #一定不能忘记提交保存
11 return HttpResponse('ok')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
扩展自带的auth_user表
1. 新建一个表, 一对一关联上面的auth_user表
2. 继承的方式
1 from django.contrib.auth.models import AbstractUser
2
3 class UserInfo(AbstractUser):
4 phone=models.CharField(max_length=11,null=True)
5 addr=models.CharField(max_length=128,null=True)
注意:
在settings.py中一定要加
AUTH_USER_MODEL = 'app名.类名'
1 AUTH_USER_MODEL = 'apprun.UserInfo'