跳转到主要内容

轻松为您的Grok应用程序提供登录界面。

项目描述

megrok.login

轻松设置基于会话的登录界面,适用于您的Grok-based webapp。

使用megrok.login,您可以在将grok.Application实例放入ZODB时自动设置“可插拔认证实用程序”(PAU)。最显著的效果是,当用户尝试访问受保护的视图时,您将有一个登录界面而不是基本身份验证。

要启用您的用户通过登录界面而不是基本身份验证进行登录,只需创建并安装此类应用程序即可

import grok
import megrok.login

class App(grok.Application, grok.Container):
  """An application.
  """
  megrok.login.enable()

有关使用megrok.login对身份验证进行微调的详细信息,请参阅下面的详细文档。

安装

  1. megrok.login添加到您的setup.py中的依赖项。

  2. 运行

    $ ./bin/buildout
  3. 在您的代码中使用megrok.login

详细文档

megrok.login

轻松设置您的Web应用的登录页面。

使用 megrok.login,您可以为您的 grok.Application 和其他 grok.Site 实例设置基于会话的简单登录页面。这与开箱即用的行为不同,其中身份验证通过基本身份验证进行。

简介

在这里,我们简要介绍如何使用 megrok.login 启用基于会话的简单身份验证。更复杂的示例可以在 tests 子目录中找到

  • 基本用法

  • simple.py:

    如何使用默认值设置简单的基于会话的身份验证。这涵盖了最基本的使用案例。

  • customlogin.py:

    如何设置带有您自己的登录页面的基于会话的身份验证。

  • autoregister.py:

    如何设置基于会话的身份验证,以便用户可以通过提供自己选择的密码来简单地注册到网站。

  • strict.py:

    如何设置不允许回退到在启动时由 ZCML 设置的内部主体的基于会话的身份验证。

  • 更多高级内容

  • custompausetup.py:

    如何使用您自己的 Pluggable Authentication Utility 设置来设置基于会话的身份验证。

megrok.login 指令

您可以使用 megrok.login 做什么

megrok.login.enable()

启用基于会话的身份验证。此标记指令 必须 使用才能使用 megrok.login 功能。它可以在任何 grok.Site 类上设置

import grok
import megrok.login
class MyApp(grok.Application, grok.Container):
  megrok.login.enable()

如果未使用其他 megrok.login 指令,则启用基于会话的身份验证(登录屏幕而不是基本身份验证)。

megrok.login.viewname(<viewname>)

将名为 <viewname> 的视图注册为登录页面。这样,您可以指定自己的登录页面。您还必须使用 megrok.login.enable() 来使其生效

import grok
import megrok.login

class MyApp(grok.Application, grok.Container):
  megrok.login.enable()
  megrok.login.viewname('login')

class Login(grok.View):
  def render(self):

  def update(self, camefrom=None, SUBMIT=None):
      self.camefrom=camefrom
      if SUBMIT is not None and camefrom is not None:
          # The credentials were entered. Go back. If the entered
          # credentials are not valid, another redirect will happen
          # to this view.
          self.redirect(camefrom)
      return

登录视图的模板可能如下所示

<html>
  <head>
    <title>Login</title>
  </head>
  <body>
    <h1>Custom Login Page</h1>
    <form method="post">
      <div>
        <label for="login">Username</label>
        <input type="text" name="login" id="login" />
      </div>
      <div>
        <label for="password">Password</label>
        <input type="password" name="password" id="password" />
      </div>
      <div>
        <input type="hidden" name="camefrom"
               tal:attributes="value view/camefrom" />
        <input type="submit" name="SUBMIT" value="Log in" />
      </div>
    </form>
  </body>
</html>

有关详细信息,请参阅 tests/customlogin.py

megrok.login.strict()

通常,megrok.login 为您的网站安装了两个认证插件

  • 一个正常的 PrincipalFolder,可以包含主体(用户),但在开始时是空的。

  • 一个回退认证器,它针对内部主体注册表中的主体进行身份验证。

如果您使用 megrok.login.strict(),则后者不会被安装,并且像在您的 site.zcml 中定义的管理员用户这样的用户将不会被您的登录页面接受。

示例

import grok
import megrok.login
class MyApp(grok.Application, grok.Container):
  megrok.login.enable()
  megrok.login.strict()

有关详细信息,请参阅 tests/strict.py

megrok.login.autoregister()

如果使用此指令,则身份验证系统将自动注册登录时仍不存在的任何用户,并将其添加到 PrincipalFolder

示例

import grok
import megrok.login

class ManageApp(grok.Permission):
    grok.name('app.ManageAutoRegister')

class AutoRegisterApp(grok.Application, grok.Container):
    megrok.login.enable()
    # We grant this permission to autoregistered users.
    megrok.login.autoregister('app.ManageAutoRegister')

有关详细信息,请参阅 tests/autoregister.py

megrok.login.setup(<callable>)

如果您想自己设置可插入身份验证实用程序(PAU),则可以使用此指令。它期望一个可调用的参数,该参数将作为参数传递给已创建的 PAU 实例,一旦将应用程序(或其他 grok.Site)对象添加到 ZODB。

有关详细信息,请参阅 tests/custompausetup.py

megrok.login 更改

0.4 (2011-02-09)

  • 更新依赖项/导入以保持与 Grok 1.3 的兼容性。不再需要 zope.app.* 依赖项。

    请注意,从本版本开始,您必须手动注册会话支持,例如,在您的 configure.zcml 中这样做

    <include package=”zope.session” file=”configure.zcml” />

    如果您使用 z3c.autoinclude 并在您的 configure.zcml 中具有某些 includeDependencies 指令,则不需要此操作。

  • 添加(可选)loginForm.html 视图以替换由 zope.app.authentication 提供的视图。

0.3 (2010-07-03)

  • 支持 Grok 1.1 和 1.2。

    我们现在使用 zope.pluggableauth 及其相关功能,如果可用。请注意,如果遇到无法找到认证适配器等问题,您可能需要手动在项目中添加 zope.app.authentication。您可以在项目的 configure.zcml 中这样做:

    <include package="zope.app.authentication" file="configure.zcml"
    />

    如果您在项目的 configure.zcml 中使用了 includeDependencies(对于基于 grokproject 的所有项目,这通常是正确的),那么在项目的 setup.py 中依赖 megrok.login 应该足够,因为 megrok.loginconfigure.zcml 现在已经为您包含了 zope.app.authentication

  • 默认的 PAU 设置现在不再包含“认证后无挑战”认证插件。在使用该插件作为认证器链的一部分时,已经认证的用户在访问仍被禁止的页面时,将收到 Unauthorized 错误,而不是被重定向到登录页面。

    请注意,此新行为仅适用于新创建的应用程序。如果您有一些使用旧版 megrok.login 设置的旧应用程序,您必须手动修改已设置 PAU 的认证插件,例如使用 ZMI。

0.2 (2009-12-09)

  • 将实用工具设置更改为反映 Grok API 的更改:最终使用 IUtilitySetup 而不是 grokcore.meta.setupUtility。感谢 Simon Jagoe。

  • 更改了测试配置,以处理新的 grok.View 权限。

  • 添加了来自 grok 的 versions.cfg 文件。

0.1 (2008-12-26)

(初始版本)

下载

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

megrok.login-0.4.tar.gz (21.2 kB 查看散列)

上传时间

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面