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