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'

 

posted @ 2018-09-13 18:05  青红*皂了个白  阅读(264)  评论(0编辑  收藏  举报