我正在尝试在脚手架站点中使用 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 操作并使用“代理主机”,但它们似乎不起作用。
我的猜测是项目中存在数据库冲突,因为脚手架站点使用示例数据库进行虚拟登录,不推荐用于生产版本。因此,我正在寻找一个高效的身份验证插件。
任何类型的帮助将不胜感激。
提前致谢。