Haskell YesodAuthEmail无法推断站点0的m~Handlers
我想补充一点Haskell YesodAuthEmail无法推断站点0的m~Handlers,haskell,authorization,yesod,type-families,Haskell,Authorization,Yesod,Type Families,我想补充一点 instance YesodAuthEmail App 到Yesod Postgresscaffolding(Yesod版本1.6)并陷入编译错误 有关守则如下: instance YesodAuth App where type AuthId App = UserId .... authPlugins :: App -> [AuthPlugin App] authPlugins app = [authOpenId Claimed
instance YesodAuthEmail App
到Yesod Postgres
scaffolding(Yesod版本1.6)并陷入编译错误
有关守则如下:
instance YesodAuth App where
type AuthId App = UserId
....
authPlugins :: App -> [AuthPlugin App]
authPlugins app = [authOpenId Claimed []] ++ extraAuthPlugins
where extraAuthPlugins = [ authEmail ]
instance YesodAuthEmail App where
type AuthEmailId App = UserId
afterPasswordRoute _ = HomeR
addUnverified email verkey =
runDB $ insert $ User email Nothing
我收到的错误是:
/home/justin/code/yesodemail/src/Foundation.hs:273:11:错误:
•无法从上下文MonadAuthHandler应用程序m推断:m~HandlerFor site0
受以下类型签名的约束:
addUnverified::yessod.Auth.Email.Email->VerKey->AuthHandler应用程序(AuthEmailId应用程序)
..
预期类型:m(AuthEmailId应用程序)
实际类型:site0的Handler0(关键用户)
根据类型,
getEmail :: AuthEmailId site -> AuthHandler site (Maybe Email)
type MonadAuthHandler master m = (MonadHandler m, YesodAuth master, master ~ HandlerSite m, Auth ~ SubHandlerSite m, MonadUnliftIO m)
type AuthHandler master a = forall m. MonadAuthHandler master m => m a
我本以为这会被编译。我在误解什么
<> P.S.我试着把所有相关的东西都包括进去,但是完整的基础。HS是在 < p>的类型是:
要在AuthHandler
中调用它,需要将其提升到HandlerFor
如果我没有弄错的话,这就是来自MonadHandler
的方法的用途
如果使用它编写runDB
调用,它应该可以工作:
addUnverified email verkey =
liftHandler . runDB $ insert $ User email Nothing
我找到了你问题的详细答案
addUnverified email verkey =
liftHandler . runDB $ insert $ User email Nothing