4

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

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

谢谢

4

1 回答 1

4

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

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

无论如何,请仔细阅读此页面。

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

希望这可以帮助!

于 2010-01-29T00:16:54.280 回答