• 基于注册登陆简单的使用django认证系统


    简单的使用Django认证系统

    User对象

    User对象是认证系统的核心。它们通常表示与你的站点进行交互的用户,并用于启用限制访问、注册用户信息和给创建者关联内容等

    默认user的基本属性有:

    创建一个django中的User对象

    创建users最直接的方法是使用create_user()辅助函数:

    下面的代码是未激活的账户

    from django.contrib.auth.models import User
    user = User.objects.create_user(username, email, password)
    
    user.is_active = 0
    
    user.save()
    #如果激活则把is_active 字段值改为1

     

     

    认证一组给定的用户名和密码。

    使用authenticate(),认证一组给定的用户名和密码。它接收关键字参数形式的凭证,使用默认配置时参数是username和password,如果密码能够匹配给定的用户名,它将返回一个User对象。如果密码无效,authenticate()返回None。

    #导入authenticate()
    
     
    
    from django.contrib.auth import authenticate
    
    user = authenticate(username=‘john‘, password=‘secret‘)
    if user is not None:
        #用户名密码正确
        if user.is_active:
            #用户已激活
            #记录用户的激活状态
            login(request,user)
            # 实现页面的跳转
            response =redirect(reverse('user:user'))
            #判断是否需要记住用户名
    
            remember = request.POST.get('remember')
            if remember == 'on':
                #记住用户名
                response.set_cookie('username',username,max_age=7*21*3600)
            else:
                response.delete_cookie('username')
            return response
        else:
            #用户未激活
            return render(request, 'login.html', {'errmsg': '请激活您的账户'})
    else:
        #用户名或密码错误
        return render(request, 'login.html',{'errmsg':'用户名或密码错误'})
    
     

     

     

    修改密码

    Django不会在user模型上存储原始的(明文)密码,而只是一个哈希(完整的细节参见文档:密码是如何管理的)。因为这个原因,不要尝试直接操作user的password属性。这也是为什么创建一个user时要使用辅助函数。

    若要修改一个用户的密码,你有几种选择:

    manage.py changepassword *username*提供一种从命令行修改User密码的方法。它提示你修改一个给定user的密码,你必须输入两次。如果它们匹配,新的密码将会立即修改。如果你没有提供user,命令行将尝试修改与当前系统用户匹配的用户名的密码。

    你也可以通过程序修改密码,使用set_password()

    代码如下:

    >>> from django.contrib.auth.models import User
    
    >>> u = User.objects.get(username=‘john‘)
    
    >>> u.set_password(‘new password‘)
    
    >>> u.save()


      

    Ps: 如果你安装了Django admin,你还可以在认证系统的admin页面修改user的密码。

    参考链接:

      http://www.mamicode.com/info-detail-2069023.html

  • 相关阅读:
    Android SDK manager 无法更新解决方法
    platform_set_drvdata的源码分析
    从一个男人身上看出他的修养和抱负
    更换RAID1硬盘过程记录
    无线路由器连接有线路由器设置
    在ASP.NET下实现数字和字符相混合的验证码 (转载)
    不走寻常路 设计ASP.NET应用程序的七大绝招
    .NET 2005 使用MasterPages实现Web窗体模板
    用Visual C# 实现四则混合运算(转载)
    如何实施好CRM (转载)
  • 原文地址:https://www.cnblogs.com/pythonyeyu/p/11319742.html
Copyright © 2020-2023  润新知