上周,我们三个人花了两天时间尝试使用Happstack构建一个简单的web应用程序。我们关注的问题之一是身份验证,似乎曾经有一个看起来非常好的Happstack.Auth
包。不幸的是,原来的项目似乎已经被放弃了,虽然有一个分支,但我们无法让这个分支构建。
人们推荐在Happstack中进行身份验证的替代方案是什么?happstack-auth
可行吗?
您可以考虑使用happstack-authenticate作为替代方案,
darcs get http://src.seereason.com/happstack-authenticate/
happstack-authenticate构建在authenticate和pwstore之上,提供:
- 标准用户名/密码认证
- openid身份验证
- facebook connect
代码被设计成可以与多个不同的模板解决方案一起使用。不过,目前只有HSP模板。
现在还没有,但将来会的。我希望它成为事实上的happstack身份验证解决方案。
你可以在这里看到它的动作:
http://www.seereason.com/源代码包括一个演示目录,其中包含一个自包含的示例。
代码可以工作——尽管还有一些特性需要添加。例如,如果您被重定向到登录页面,那么在您登录后,您最终应该被转发回您试图访问的原始页面。
目前最大的缺点是文档。这个问题将得到解决。
你会注意到happstack-authenticate使用web-route作为类型安全的url,使用acid-state来存储身份验证信息。但是,这些设计选择不必泄漏到应用程序的其余部分。
您使用的是什么模板解决方案?我对添加对其他系统的支持很感兴趣。
——杰里米
注。如果您查看代码,它可能看起来比预期的要复杂一些。这是因为它的设计允许:
单个配置文件的多个认证方法
例如,您可以将多个openid帐户链接到相同的配置文件。也许是因为您担心您可能会失去访问您的主要开放帐户的权限。或者,您可能希望团队中的每个人都使用共享帐户登录。(例如,在像twitter这样的网站上,您可能希望多人能够通过公司帐户发布tweet)。
单个身份验证方法的多个配置文件
在像twitter这样的网站上,你可能有多个帐户。例如,我有自己的推特账号,我的照片,我的音乐,我的快乐,我的季节,还有更多。与其对每个帐户进行单独的身份验证,不如进行单个身份验证,然后选择我想要的"配置文件"。
站点不必支持这些选项。