基于 Django1.10 文档的深入学习(17)——Customizing authentication 之 Custom users and permissions

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假定某些字段在用户模型上可用。 如果您的用户型号不提供这些字段,则在检查权限时会收到数据库错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值