python - 如何扩展 Turbogears 2.1 登录功能

标签 python turbogears turbogears2

我正在使用 Turbogears 2.1 和 repoze.who/what,但在弄清楚如何扩展基本身份验证功能时遇到了问题。我实际上是在尝试要求用户在登录之前通过电子邮件链接激活他们的帐户。如果他们尝试在不激活帐户的情况下登录,我想显示一条适当的错误消息。默认的 Turbogears 功能仅针对所有错误显示一条消息。

我创建了自己的身份验证插件,效果很好。如果用户尚未激活他们的帐户,它将不允许用户登录。但是,当我尝试创建表单并显示自定义错误消息时,问题就来了。我该怎么做呢?

谢谢

最佳答案

如果不查看您的实际代码,就不可能给出真正好的答案,但这里有一个想法:

  1. 创建一个 repoze.who 元数据提供者插件,“涂鸦”一些东西来指示用户是否已激活他们的帐户。
  2. 创建一个“挑战者决策者”插件,查看用户是否已通过身份验证以及他们是否已激活帐户(通过检查您使用元数据插件设置的元数据)。
  3. 创建挑战者插件以发回实际挑战。如果用户未通过身份验证,则发回登录表单/提示。如果用户已通过身份验证(您的身份验证器插件成功),但他们尚未激活他们的帐户,请发回自定义错误页面,要求用户激活他们的帐户。

无论如何,请阅读this page仔细。

您也可以将 repoze.what 与自定义谓词一起使用,但您可能必须在整个代码中散布装饰器,检查它们的帐户是否已在每个 Controller /方法上激活。丑。

希望这对您有所帮助!

关于python - 如何扩展 Turbogears 2.1 登录功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960747/

相关文章:

mysql - 如何在带有过滤器的sqlalchemy中使用dateadd?

python - 如何在扩展页面的 </body> 之前添加内容? ( child 模板)

python - 如何放置多个@paginate Turbogears 2?

python - SQLAlchemy(Postgresql) - 竞争条件

python - Turbogears/genshi 中的 block 标签(py :match)?

python - 如何测试立即运行的代码?

python - 在不定义正确答案的情况下处理错误

python - 如何在 Turbogears 中创建可以从 Controller 内部调用或使用模板呈现的 Controller 方法

python - pandas 在两列匹配嵌套列表值的地方放置

python - 使用内置函数计算数字的数字之和