zoukankan      html  css  js  c++  java
  • 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'
  • 相关阅读:
    js—初始的二维数组是一个,3行4列的数组。将其转换为4行3列的二维数组
    js_求1—10000的完数
    JS——输入一个日期判断该日期为当年的第几天
    JS——打印倒三角和正三角
    Java内存机制和内存地址
    deepin下搭建基于github和hexo的个人博客
    URL and URI 的 比较
    Cannot use this in a static context
    java项目获取文件路径总结
    利用exe4j制作exe文件
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9642135.html
Copyright © 2011-2022 走看看