【发布时间】:2016-10-06 16:53:29
【问题描述】:
我想使用会话值而不是 Key 从数据库中获取用户信息。
使用这个:
getProfileR :: Handler Html
getProfileR = do
user <- runDB $ get404 $ lookupSession "_ID"
defaultLayout $ do
$(whamletFile "templates/profile.hamlet")
改为:
getProfileR :: UserId -> Handler Html
getProfileR uid = do
user <- runDB $ get404 uid
defaultLayout $ do
$(whamletFile "templates/profile.hamlet")
有可能吗?不推荐吗?
【问题讨论】:
-
你为什么要这样做?如果我没记错的话,Yesod 已经做了那些簿记工作。它将
AuthID存储在您的会话中,这通常是持久键。 -
我可以将 AuthID 作为 Key 用于另一个使用 UserID 作为外键的表吗?如果可能的话,我相信这可以解决我的问题。
-
是的。但那是在数据库模式级别本身。所以你几乎可以做任何你想做的事。如果您能说出您要解决的问题,我们可能会为您提供更好的帮助。
-
我想从数据库中获取与用户相关的信息。因此,我必须检索登录的 UserId 才能在另一个表中查找数据。它不一定是 Session 值。
标签: session haskell authentication yesod