django实战:各种后台管理系统的登录注册认证功能

auth模块

Auth模块是Django自带的用户认证模块,可以实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。默认使用 auth_user 表来存储用户数据。

auth模块的使用

  1. 申请超级管理员用户
    首先执行数据迁移,分为两步

    1.1生成迁移文件命令

    python manage.py makemigrations
    

    执行生成迁移文件命令后,会在应用目录下的migrations目录中生成迁移文件。
    1.2 执行迁移命令如下:

    python manage.py migrate
    

迁移得到数据库之后,我们要创建超级管理员命令:

python manage.py createsuperuser

除了用命令行创建超级管理员外,还可以用python来创建:

from django.contrib.auth.models import User
user = User.objects.create_superuser(username='用户名',password='密码',email='邮箱',...

添加完超级管理员之后,你的django就可以用超级管理员这个用户进行auth模块的验证登录了,还可以添加管理员。
先上代码:
settings:

'django.contrib.auth.middleware.AuthenticationMiddleware',
#这个是认证的中间件,认证成功的话,就可以把这个用户user封装到request里面,下次过来的话就可以直接带着这个cookies过来

from  django.contrib.auth import authenticate,login
from  django.contrib  import auth

from  django.contrib.auth.models import  User  #这个可以拿到这个django自带的User的表,这个是django自己的用户认证的表(创建超级用户和普通用户的表)

在views.py里面添加login方法:

from  django.shortcuts import  render,HttpResponse,redirect
#加了一个装饰器模块
from django.contrib import auth
from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required



def  login(request):
    print('进行认证')
    if  request.method=='POST':
        username = request.POST.get('username')
        passwd = request.POST.get('passwd')
        user = auth.authenticate(username=username, password=passwd)
#假如这个验证成功的话,这个user就有值,就可以进行登录
        auth.login(request, user)####这个依赖于session,将验证过的用户赋值给request.user属性
#这个是把这个user封装进这个requets里面,下面既可以直接进行调用了,通过requets.user进行调用,进行登录验证
        '''
        原理讲解:
        这个是将这个user封装进这个request里面,就是将这个user和密码写进这个sessions里面,下次过来的时候就可以直接进行访问了,带着这个cookies进行匹配
        
        '''
        if user:
            return redirect('/index/')
        else:

            return   render(request, 'login.html')
def userlogout(request):
    logout(request) # 其实内部就是执行了request.session.flush()
    # Redirect to a success page.
    return redirect("login")

#加了装饰器的话,不知道要跳转到那个页面,所以要先在settings里面加上这个路劲,指定要跳转的页面
‘’’
原理讲解:
当要到这个index的页面的话,加了装饰器的话,就可以指定跳转到那个页面,在settings里面加了一个login_url的路劲
这个当访问这个index的url的时候,就会跳转到这个login的页面,然后登陆成功的话,就可以到这个index的页面
settings里面的配置:

#配置这个url,如果没有登陆成功的话,就跳转到那个页面
LOGIN_URL="/login/"

‘’’

@login_required
def index(request):
    print('进入这个首页的页面')
    ret=request.user.is_authenticated()
    ###这个是判断是否是这个用户已经注册过的
    print(request.user.username)
#这个是已经封装到requets的模块里面了,所以可以直接进行调用,在这个request里面有这个user,可以直接进行调用里面的user

以上是登录的功能,下面我们来做一下注册的功能吧。

def register(request):
    print('注册')
    user_obj=User.objetcs.create(username='fong',password='1234')
    ret=user_obj.check_password('23443')
#这个是验证密码,注册的时候进行的二次的验证
    print(ret)
#修改密码
    user_obj.set_password('addsds')
#这个是重新设置这个密码
    user_obj.save()
#保存这个密码
    return   HttpResponse('ok')

其实原理也不是很复杂

这个相当于在session里面记录一个session_id
request.session[‘user_id’]=user[0].id
生成特殊的字符串
特殊字符串生成key的时候,在数据库里面对应一个session_value
在响应的向这个写了一个cookies,cookies的值就是这个特殊的字符串

在这个session里面拿到这个user_id
user_obj=request.session.get(‘user_id’)
拿到这个user_id,在已经写进这个session里面的用户拿到这个user_id

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值