Yesod - 将Yesod-Auth-Account 1.4.3与脚手架网站集成

时间:2018-06-18 16:34:02

标签: haskell functional-programming yesod

我正在尝试在脚手架网站中使用Yesod的帐户身份验证插件。脚手架网站本身工作正常,插件本身工作正常,但是,当我尝试通过在stack.yaml文件中添加额外的依赖项来集成项目中的插件(即(extra-deps:[yesod] -auth-account-1.4.3])或者不添加我必须在项目中进行大量更改的依赖项,在这两种情况下,堆栈构建都会失败,并且会出现以下来自Account.hs文件的错误:

Couldn't match type ‘UserAccount db0’ with ‘UserAccount db’
      Expected type: UserAccount db
                     -> HandlerT Auth (HandlerT master IO) Html
        Actual type: UserAccount db0
                     -> HandlerT Auth (HandlerT master0 IO) Html
      NB: ‘UserAccount’ is a type function, and may not be injective
      The type variable ‘db0’ is ambiguous
    • In the ambiguity check for ‘unregisteredLogin’
      To defer the ambiguity check to use sites, enable AllowAmbiguousTypes
      When checking the class method:
        unregisteredLogin :: forall (db :: * -> *) master.
                             YesodAuthAccount db master =>
                             UserAccount db -> HandlerT Auth (HandlerT master IO) Html
      In the class declaration for ‘YesodAuthAccount’
    |
806 |     unregisteredLogin :: UserAccount db -> HandlerT Auth (HandlerT master IO) Html
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

我在网上看到了一些关于添加“liftHandler”的解决方案。对于每个runDB操作并使用“代理主机”,但它们似乎不起作用。

我的猜测是项目中存在数据库冲突,因为脚手架站点使用示例数据库进行虚拟登录,不建议用于生产版本。因此,我正在寻找一个高效的身份验证插件。

任何类型的帮助都将受到赞赏。

提前致谢。

0 个答案:

没有答案