zoukankan      html  css  js  c++  java
  • auth模块

    auth模块

    当涉及到用户相关功能的时候就可以考虑使用auth模块
    特别提醒: 如果使用auth模块就去使用全套的,不是自己写一部分,用别人一部分

    如何创建超级用户,用户登录django admin的后台管理

    在tools里面的run manage.py 点击过后输入终端命令 createsuperuser

    校验用户是否存在

    先导包 from django.contrip import auth
    user_obj = auth.authenticate(username=username, password=password)
    在django.user表中校验用户是否存在
    如果用户存在就返回一个用户对象,不存在就返回一个None

    保存用户登录状态

    auth.login(request, user_obj)
    保存的是校验用户是否存在时生成的对象
    只要保存了用户登录状态,只要有request的地方就可以拿到用户对象(利用session实现,默认会执行一个request.session[键]=值)

    判断当前用户是否登录

    request.user.is_authenticated()
    返回值是布尔类型

    获取当前用户对象

    在保存用户状态时就说过有request的地方就可以拿到用户对象
    通过: request.user
    拿到对象就可以点取值到对象的一些字段属性

    如何给视图函数加上校验用户是否登录的登录认证

    先导入包:
    from django.contrib.auth.decoration import login_required
    这个就是一个装饰器,有两种配置方法

    局部配置

    局部需要指定跳转页面,具体格式如下,优先级最高

    @login_required(login_url='/login/')
    def home(request):
        ...
    

    全局配置

    先到settings.py文件夹下面去添加一个配置

    LOGIN_URL='/login/'  # 指定没有登陆默认跳转的页面为 login 页面
    

    在添加装饰器(全局不用指定,直接加)

    @login_required
    def home(request):
        ...
    

    修改密码

    校验原密码是否正确

    bool = request.user.check_password(old_password)
    

    返回值是布尔类型

    设置新密码

    request.user.set_password(new_password)
    requset.user.save()
    

    记住使用完set_password的时候一定要执行save,不然是无效操作

    用户的注册

    先导包
    form django.contrib.auth.models import User
    这一步操作就是相当于把User这张表取出来

    # 创建普通用户
    User.objects.create_user(username=username, password=password)
    # 创建超级用户(创建超级用户必须要传邮箱参数)
    User.objects.create_superuser(username=username, password=password, email='123@qq.com')
    

    还有一种之前的往数据库里面直接创建一条数据的create 我们是没法和auth一起使用的,因为保存在数据库里面的密码都是经过加密的,使用create 创建的数据中密码是没有经过加密的.

    扩展auth_user表的字段

    第一种(利用一对一关系):

    不好用

    第二种(继承):

    1. 自己写一个类,继承原来的auth_user类,也就是继承 AbstractUser
    2. 然后在setting配置文件中,通过AUTH_USER_MODEL = '应用名.表名'来告诉django要用新建的类来代替auth_user表
      AUTH_USER_MODEL = '应用名.表名' (一定要配置)
    1. models.py 
    
    # 先导入包
    from django.contrib.auth.models import AbstractUser
    
    class User(AbstractUser):
        tel = models.IntegerField()
        ...
        
    

    注意:

    1. 当继承了AbstractUser之后,我们自定义的字段名不能和之前的字段一样
    2. 通过上面的方式继承了的表还可以使用auth的所有功能
    3. 如果在配置前已经执行了数据库迁移命令,就不能再创建了.
  • 相关阅读:
    git查日志命令
    使用git把本地目录传到远程仓库
    本地ssh设置多个git项目访问
    php的phar是什么?
    .ssh免密登录问题解决
    idea配置tomcat时,运行按钮灰色禁用状态
    idea快捷键main,print,代码提示
    windows安装hadoop找不到JAVA_HOME
    spring boot 启动时找不到主类
    jquery 删除自己
  • 原文地址:https://www.cnblogs.com/xiongchao0823/p/11774156.html
Copyright © 2011-2022 走看看