Auth组件

Django Auth认证组件

Auth组件是什么

Django为我们写好的一个综合的用户管理模块。这个模块为我们提供了关于用户管理的大多数方法。

使用

from django.contrib import auth

方法

  • authenticate(username,password)

    判断用户名密码是否存在,存在返回认证的对象,否则返回None

    user_obj = auth.authenticate(username = username, password = password)
    print(user_obj)
    
  • is_authenticate

    判断当前请求是否经过验证

    if not request.user.is_authenticated():
        return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
    
  • login(user_obj)

    登录:需要将认证过得对象传入,会自动帮你添加session

    auth.login(request, user_obj)
    
  • logout(request)

    退出登录

    auth.logout(request)
    
  • login_requierd

    语法糖,自动帮我们做权限认证,例如有没有登录,login_url设置跳转的接口

    @login_required(login_url="/login")
    def home(request):
        return render(request, "home.html")
    
  • create_user

    创建普通用户

    from django.contrib.auth.models import User
    user_obj = User.objects.create_user(username=username, password=password)
    
  • create_superuser

    创建管理员用户

    user_obj = User.objects.create_superuser(username=username, password=password, email=email)   # 管理员用户必须要传三个参数
    
  • check_password

    查看密码时候一致

    is_pwd = request.user.check_password(password)
    
  • set_password

    设置新密码,设置密码必须要保存,并且修改密码后session会失效,这是Django的机制使然

    request.user.set_password(new_pwd)
    request.user.save()
    

方法

  • is_staff : 用户是否拥有网站的管理权限
  • is_active : 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录

继承拓展User表字段

from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
    
    phone = models.CharField(max_length=11, null=True, unique=True)
    addr = models.CharField(max_length=32, null=True)

在models.py 中添加完拓展类后还需要在setting.py 中配置

AUTH_USER_MODEL = "app名.UserInfo"
posted @ 2019-11-18 19:56  戈达尔  阅读(85)  评论(0编辑  收藏  举报