2011-08-09 23 views
3

我一直在使用它来重建我的网站,以了解Yesod。我开始使用由yesod init生成的代码。此代码使用Yesod附带的身份验证框架,其中包括Yesod.Auth.Email,它允许您通过提供电子邮件地址来创建帐户。Yesod.Auth.Email - 设置公共用户标识

我对默认代码的问题是这样的:它将用户标识符设置为他们的电子邮件地址。如果该标识符将在网站上公开使用(例如,识别网页/博客上的评论员),那么您需要一些用户不会介意显示以识别它们的内容。

理想情况下,我希望网站在提交电子邮件地址时或在点击链接验证帐户并输入密码时要求提供(唯一)公共标识。问题是这似乎需要更改Yesod模块,因为在那里定义了注册表/密码表单。

我可以很容易地进行更改。但我并不想继续分发Yesod模块,以使它们按照我希望的方式进行操作。有没有另外一种方法可以使用现有的yesod-auth模块来做到这一点?这完全可以用框架来完成,但如果是这样的话,一个小例子将被赞赏。

回答

1

我不知道你用什么样的代码来显示用户在网站上的身份,但你可以很容易地添加一列到用户表:

User 
    ... 
    publicIdentifier Text Update 

,并在你的小村庄只是插值变量:

#{userPublicIdentifier user} 
+0

我可以这样做,但问题是当用户提供publicIdentifier时。在Yesod.Auth.Email中定义了注册新用户的表单,但是我想在用户注册时要求唯一的公有唯一性。因此,好像我必须分叉Yesod.Auth.Email做我想做的事情。 – chrisdb

+0

我仍然建议Max的方法。看看我们为Haskellers做了什么:首先登录,然后添加额外的配置文件。请记住,Yesod认证应该与第三方认证配合使用,这是唯一可行的方法。 –