当前位置: 移动技术网 > IT编程>脚本编程>Python > Django用户认证系统(一)User对象

Django用户认证系统(一)User对象

2019年02月13日  | 移动技术网IT编程  | 我要评论

风,箭在弦上电视剧下载,绝代双骄 梁朝伟

原文:https://www.cnblogs.com/linxiyue/p/4060213.html

user对象

user对象是认证系统的核心。用户对象通常用来代表网站的用户,并支持例如访问控制、注册用户、关联创建者和内容等。在django认证框架中只有一个用户类,例如超级用户('superusers’)或('staff')用户只不过是相同用户对象设置了不同属性而已。

缺省字段fields

username

用户名,必需字段。30个字符或更少,可以包含 _, @, +, . 和 - 字符。

first_name
可选。 30 characters or fewer.

last_name
可选。 30 characters or fewer.

email
邮箱,可选。 email address.

password
密码,必需。django不是以明文存储密码的,而是存储哈希值。

groups
用户组。many-to-many relationship to group

user_permissions
用户权限。many-to-many relationship to permission

1
2
3
4
5
6
7
8
9
groups = models.manytomanyfield(group, verbose_name=_('groups'),
    blank=true, help_text=_('the groups this user belongs to. a user will '
                            'get all permissions granted to each of '
                            'their groups.'),
    related_name="user_set", related_query_name="user")
user_permissions = models.manytomanyfield(permission,
    verbose_name=_('user permissions'), blank=true,
    help_text=_('specific permissions for this user.'),
    related_name="user_set", related_query_name="user")

is_staff
boolean。决定用户是否可以访问admin管理界面。默认false。

is_active
boolean。 用户是否活跃,默认true。一般不删除用户,而是将用户的is_active设为false。

is_superuser
boolean。默认false。当设为true时,用户获得全部权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def has_perm(self, perm, obj=none):
    """
    returns true if the user has the specified permission. this method
    queries all available auth backends, but returns immediately if any
    backend returns true. thus, a user who has permission from a single
    auth backend is assumed to have permission in general. if an object is
    provided, permissions for this specific object are checked.
    """
 
    # active superusers have all permissions.
    if self.is_active and self.is_superuser:
        return true
 
    # otherwise we need to check the backends.
    return _user_has_perm(self, perm, obj)

last_login

上一次的登录时间,为datetime对象,默认为当时的时间。

1
user.last_login = timezone.now()

date_joined
用户创建的时间

方法methods

is_anonymous()

是否是匿名用户。

is_authenticated()
用户是否通过验证,登陆。

get_full_name()
返回first_name plus the last_name, with a space in between.

get_short_name()
返回first_name.

set_password(raw_password)
设置密码。

check_password(raw_password)
验证密码。

get_group_permissions(obj=none)
返回用户组权限的集合。

get_all_permissions(obj=none)
返回用户所有的权限集合。

has_perm(perm, obj=none)
用户是否具有某个权限。perm的格式是 "<app label>.<permission codename>". 

has_perms(perm_list, obj=none)
用户是否具有权限列表中的每个权限。

创建用户

由于user对象的密码不是明文存储的,所以创建user对象时与通常的model create不同,需用内置的create_user()方法。

1
2
3
4
5
6
7
8
>>> from django.contrib.auth.models import user
>>> user = user.objects.create_user('john''lennon@thebeatles.com''johnpassword')
 
# at this point, user is a user object that has already been saved
# to the database. you can continue to change its attributes
# if you want to change other fields.
>>> user.last_name = 'lennon'
>>> user.save()

当然也可以在admin界面中添加用户。

创建superusers

1
$ python manage.py createsuperuser --username=joe --email=joe@example.com

修改密码

使用内置的set_password()方法。

1
2
3
4
>>> from django.contrib.auth.models import user
>>> u = user.objects.get(username='john')
>>> u.set_password('new password')
>>> u.save()

验证用户

authenticate()

验证给出的username和password是否是一个有效用户。如果有效,则返回一个user对象,无效则返回none。

1
2
3
4
5
6
7
8
9
10
11
from django.contrib.auth import authenticate
user = authenticate(username='john', password='secret')
if user is not none:
    # the password verified for the user
    if user.is_active:
        print("user is valid, active and authenticated")
    else:
        print("the password is valid, but the account has been disabled!")
else:
    # the authentication system was unable to verify the username and password
    print("the username and password were incorrect.")

  

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网