基于 Django1.10 文档的深入学习(17)——Customizing authentication 之 Custom users and permissions
2017-04-27 00:36
537 查看
Customizing authentication in Django在Django中自定义身份验证
Django附带的身份验证对于大多数常见的情况来说都是足够好的,但您可能无法通过开箱即用的默认值来满足要求。 要为您的项目需求定制身份验证,需要了解提供的系统的哪些点是可扩展的或可替换的。 本文档提供了有关如何自定义验证系统的详细信息。认证后端提供可扩展的系统,用于当与用户模型存储的用户名和密码需要针对不同于Django默认的服务进行身份验证时。
您可以通过Django的授权系统为您的模型提供可以检查的自定义权限。
您可以扩展默认的用户模型,或者替换完全定制的模型。
自定义用户和权限
为了方便将Django的权限框架包含在您自己的用户类中,Django提供了PermissionsMixin。 这是一个抽象模型,您可以将其包含在用户模型的类层次结构中,为您提供支持Django权限模型所需的所有方法和数据库字段。
PermissionsMixin提供以下方法和属性:
class models.PermissionsMixin
is_superuser:
布尔值。指定该用户具有所有权限,而不显式分配它们。
get_group_permissions(obj = None)
通过他们的组返回用户拥有的一组权限字符串。
如果传入obj,则只返回此特定对象的组权限。
get_all_permissions(obj = None)
通过组和用户权限返回用户拥有的一组权限字符串。
如果传入obj,则只返回此特定对象的权限。
has_perm(perm,obj = None)
如果用户具有指定的权限,则返回
True,其中
perm的格式为“
<app label>。<permission codename>”(请参阅权限)。如果用户不活动,此方法将始终返回
False。
如果传入obj,则此方法将不会检查模型的权限,而是检查此特定对象。
has_perms(perm_list,obj = None)
如果用户具有每个指定的权限,则返回
True,其中每个
perm的格式为
“<app label>。<permission codename>”。如果用户不活动,此方法将始终返回
False。
如果传入obj,则此方法将不会检查模型的权限,而是检查特定对象。
has_module_perms(package_name)
如果用户在给定的包(Django应用程序标签)中具有任何权限,则返回True。如果用户不活动,此方法将始终返回False。
PermissionsMixin和ModelBackend
如果不包含PermissionsMixin,则必须确保不调用ModelBackend上的权限方法。ModelBackend假定某些字段在用户模型上可用。 如果您的用户型号不提供这些字段,则在检查权限时会收到数据库错误。
相关文章推荐
- 基于 Django1.10 文档的深入学习(14)—— Request and response objects 之 HttpResponse objects
- 基于 Django1.10 文档的深入学习(24)—— Form and field validation 之 cleaned_data
- 基于 Django1.10 文档的深入学习(11)—— django.shortcuts 之 render()
- 基于 Django1.10 文档的深入学习(23)—— QuerySet API reference 之 icontains
- 基于 Django1.10 文档的深入学习(12)—— django.shortcuts 之 redirect()
- 基于 Django1.10 文档的深入学习(30)——Class-based views
- 基于 Django1.10 文档的深入学习(3)—— models.py 之 FileField
- 基于 Django1.10 文档的深入学习(20)—— Using the Django authentication system 之 login()
- 基于 Django1.10 文档的深入学习(18)—— Using the Django authentication system 之 LoginRequiredMixin
- 基于 Django1.10 文档的深入学习(7)—— Configuring applications
- 基于 Django1.10 文档的深入学习(25)—— Applications 之 基础部分
- 基于 Django1.10 文档的深入学习(26)—— Creating forms from models 之 基础
- 基于 Django1.10 文档的深入学习(13)—— Making queries 之 Q objects
- 基于 Django1.10 文档的深入学习(5)—— Making queries 之 FOO_set
- 基于 Django1.10 文档的深入学习(16)——Authentication backends 之 class ModelBackend
- 基于 Django1.10 文档的深入学习(10)—— django.contrib.auth 之 User model
- 基于 Django1.10 文档的深入学习(29)——Built-in Views 之 static.serve()
- 基于 Django1.10 文档的深入学习(28)—— Managing static files(e.g. images, JavaScript, CSS)
- 基于 Django1.10 文档的深入学习(1)—— Settings.py 之 MEDIA_ROOT 与 MEDIA_URL
- 基于 Django1.10 文档的深入学习(2)—— Settings.py 之 STATIC_*