轻松为您的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对身份验证进行微调的详细信息,请参阅下面的详细文档。
安装
将megrok.login添加到您的setup.py中的依赖项。
运行
$ ./bin/buildout
在您的代码中使用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.login 的 configure.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)
(初始版本)