认证工具

django-authlib的Python项目详细描述


https://travis-ci.org/matthiask/django-authlib.svg?branch=masterDocumentation Status

authlib是用于实现 无密码身份验证。这是通过发送 通过电子邮件或获取电子邮件进行加密签名的链接 来自第三方提供商的地址,如google、facebook和twitter。 毕竟,另外还需要一个 在大多数网站上可以轻松重置密码时进行身份验证 当攻击者有权访问电子邮件地址时?

目标

  • 保持小巧、简单和可扩展。
  • 提供工具和实用工具,而不是强加给你一个框架。

用法

  • 使用pip将django-authlib安装到您的virtualenv中。
  • authlib.backends.EmailBackend添加到AUTHENTICATION_BAcKENDS
  • authlib添加到INSTALLED_APPS是可选的,并且只有用 如果要使用捆绑的翻译文件。没有 必需的数据库表或任何类型的表。
  • 有一个用户名为email的电子邮件字段的用户模型。 为了方便起见,在 authlib.base_user模块、BaseUserBaseUserManager。 当BaseUserManager作为objects自动可用时 您扩展了BaseUser
  • 使用捆绑视图或编写自己的视图。捆绑视图提供 使用django.contrib.messages的反馈,因此您可能需要检查 这些消息对用户可见。

google、facebook和twitter oauth客户端需要 设置:

  • GOOGLE_CLIENT_ID
  • GOOGLE_CLIENT_SECRET
  • FACEBOOK_CLIENT_ID
  • FACEBOOK_CLIENT_SECRET
  • TWITTER_CLIENT_ID
  • TWITTER_CLIENT_SECRET

请注意,您必须将Twitter应用程序配置为允许电子邮件访问, 默认情况下不启用。

捆绑视图的使用

以下url模式是使用捆绑视图的示例。 现在你必须深入研究代码(在 编写django-authlib的python代码少于500行:

from django.conf.urls import url
from authlib import views
from authlib.facebook import FacebookOAuth2Client
from authlib.google import GoogleOAuth2Client
from authlib.twitter import TwitterOAuthClient

urlpatterns = [
    url(
        r"^login/$",
        views.login,
        name="login",
    ),
    url(
        r"^oauth/facebook/$",
        views.oauth2,
        {
            "client_class": FacebookOAuth2Client,
        },
        name="accounts_oauth_facebook",
    ),
    url(
        r"^oauth/google/$",
        views.oauth2,
        {
            "client_class": GoogleOAuth2Client,
        },
        name="accounts_oauth_google",
    ),
    url(
        r"^oauth/twitter/$",
        views.oauth2,
        {
            "client_class": TwitterOAuthClient,
        },
        name="accounts_oauth_twitter",
    ),
    url(
        r"^email/$",
        views.email_registration,
        name="email_registration",
    ),
    url(
        r"^email/(?P<code>[^/]+)/$",
        views.email_registration,
        name="email_registration_confirm",
    ),
    url(
        r"^logout/$",
        views.logout,
        name="logout",
    ),
]

管理OAuth2

authlib.admin_oauth应用程序允许使用google oauth2来允许 具有相同电子邮件域的用户以验证Django的 管理界面。必须使用authlib的身份验证 这个的后端(EmailBackend)。

安装如下:

  • 在前面将authlib.admin_oauth添加到INSTALLED_APPSdjango.contrib.admin,以便获取我们的登录模板。

  • GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET添加到设置中 如上所述。

  • 添加ADMIN_OAUTH_PATTERNS设置。第一项是域名, 第二个是员工帐户的电子邮件地址。如果没有匹配的人员 帐户存在,验证失败:

    ADMIN_OAUTH_PATTERNS = [
        (r"@example\.com$", "admin@example.com"),
    ]
    
  • 在urlconf中添加一个条目:

    urlpatterns = [
        url(r"", include("authlib.admin_oauth.urls")),
        # ...
    ]
    
  • 添加https://yourdomain.com/admin/__oauth__/作为有效重定向 你的google开发者控制台中的uri。

此外,它还允许使用callable而不是email ADMIN_OAUTH_PATTERNS设置中的地址;传递可调用的 匹配正则表达式的结果。如果产生的电子邮件地址没有 存在,认证(当然)失败:

ADMIN_OAUTH_PATTERNS = [
    (r"^.*@example\.org$", lambda match: match[0]),
]

如果模式成功,但找不到具有人员访问权限的匹配用户 处理将继续下一个模式。这意味着你可以 使用用户的个人帐户(如果他们有)对用户进行身份验证,并且 返回到每个拥有google电子邮件地址的人的帐户 您的域名:

ADMIN_OAUTH_PATTERNS = [
    (r"^.*@example\.org$", lambda match: match[0]),
    (r"@example\.com$", "admin@example.com"),
]

小验证

authlib.little_auth应用程序包含一个带有电子邮件的基本用户模型 作为用户名,如果您不想编写自己的用户,可以使用它 但仍然可以从authlib的身份验证支持中获益。

用法如下:

  • authlib.little_auth添加到INSTALLED_APPS
  • 设置AUTH_USER_MODEL = "little_auth.User"
  • 也可以选择遵循上述任何步骤。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java初学者Swing递归   java将hashmap转换为JSON字符串   cURL和java字符串变量出错   java为什么不将其视为多重继承,而所有类都首先从对象类扩展,然后再扩展其他类   java如何在eclipse中添加插件依赖项   使用java从Ms word表中提取图片   java实现可比较的接口   验证生成的事务时发生java错误。木栓   java@OneToMany和不同的主键   java Jaxb2在相对路径上找不到xsd架构   java客户端C++服务器数据发送/接收问题   javajaxws-webservice。改变节点结构   java如何将带有特殊字符的字符串转换为另一个转义字符串   netbeans如何链接JGraph传感器和Java邮件?   java如何在单个tomcat中检查每个web应用程序的内存大小?   客户端图形QLJava类生成器