Haskell Yesod:在简单项目中处理会话数据
我希望使用GitHub作为oauth2端点对用户进行身份验证,并获取一些会话数据 我已经完成了整个身份验证工作,但我希望能够从会话中获得用户ID以外的一些更有用的信息,例如会话令牌,这样我就可以代表他们进行GitHub API调用 我不知道YesDouth的实例和操作方式,也不知道整个插件架构在YesDouth中是如何工作的,所以这里的任何建议都是非常棒的 这就是我现在的处境: Foundation.hsHaskell Yesod:在简单项目中处理会话数据,haskell,github,oauth,oauth-2.0,yesod,Haskell,Github,Oauth,Oauth 2.0,Yesod,我希望使用GitHub作为oauth2端点对用户进行身份验证,并获取一些会话数据 我已经完成了整个身份验证工作,但我希望能够从会话中获得用户ID以外的一些更有用的信息,例如会话令牌,这样我就可以代表他们进行GitHub API调用 我不知道YesDouth的实例和操作方式,也不知道整个插件架构在YesDouth中是如何工作的,所以这里的任何建议都是非常棒的 这就是我现在的处境: Foundation.hs instance YesodAuth App where type AuthId Ap
instance YesodAuth App where
type AuthId App = Text
getAuthId = return . Just . credsIdent
loginDest _ = HomeR
logoutDest _ = HomeR
authPlugins _ =
[ -- authBrowserId def,
oauth2Github clientId clientSecret
]
authHttpManager = appHttpManager
-- Session functions here
-- ???
maybeAuthId = lookupSession "_ID"
getHomeR :: Handler Html
getHomeR = do
--(formWidget, formEnctype) <- generateFormPost sampleForm
--let submission = Nothing :: Maybe FileForm
-- handlerName = "getHomeR" :: Text
maid <- maybeAuthId
-- Getting nothing for all of these
sess <- getSession
let access_token = lookup "access_token" sess
user_name = lookup "login" sess
Home.hs
instance YesodAuth App where
type AuthId App = Text
getAuthId = return . Just . credsIdent
loginDest _ = HomeR
logoutDest _ = HomeR
authPlugins _ =
[ -- authBrowserId def,
oauth2Github clientId clientSecret
]
authHttpManager = appHttpManager
-- Session functions here
-- ???
maybeAuthId = lookupSession "_ID"
getHomeR :: Handler Html
getHomeR = do
--(formWidget, formEnctype) <- generateFormPost sampleForm
--let submission = Nothing :: Maybe FileForm
-- handlerName = "getHomeR" :: Text
maid <- maybeAuthId
-- Getting nothing for all of these
sess <- getSession
let access_token = lookup "access_token" sess
user_name = lookup "login" sess
getHomeR::Handler Html
getHomeR=do
--(formWidget,formEnctype)您能看到会话“\u ID”中的内容吗?这可能包含在其中序列化的“访问令牌”信息。它是GitHub用户ID,没有令牌。它在当前会话中返回,没有其他内容。我认为可以通过某种方式配置YesDouth以在会话中返回更多内容,但我还没有找到一种方法。