Yesod auth:将用户重定向到注册页面

时间:2012-08-01 14:00:42

标签: authentication haskell yesod

我正在玩脚手架网站,我希望在用户首次使用OpenID或Google帐户登录后将用户发送到注册页面。

我想出了这个:

getAuthId creds = runDB $ do
        x ←  getBy $ UniqueUser $ credsIdent creds
        case x of
            Just (Entity uid _) → return $ Just uid
            Nothing → do
                return $ Just $ Key (PersistInt64 0)

HomeR处理程序中,我检查UserId值,在零的情况下显示注册表。

这种方法有效,但似乎很苛刻。处理这种问题的正确方法是什么?

1 个答案:

答案 0 :(得分:7)

我建议将信息分成两个实体:跟踪用户凭据的User实体和包含注册信息的Profile实体。例如:

User
    ident Text
    UniqueUser ident
Profile
    user UserId
    displayName Text
    UniqueProfile user

getAuthId中,您将返回现有的UserId,或者如果不存在,则创建一个新条目。在HomeR中,如果有ProfilegetBy $ UniqueProfile uid),您将获得,如果没有,则显示注册表单。