我有以下表格:
userForm :: UserId -> Form UserDemographics
userForm uid = renderDivs $ UserDemographics <$>
pure uid <*>
areq yearField "Year of birth" Nothing <*>
areq textField "Gender" Nothing <*>
areq countryField "Country of residence" Nothing <*>
areq boolField "Are you a computer programmer?" Nothing
在我的主页上,我使用generateFormPost $ userForm (entityKey userEnt)
制作填充了UserId
的表单。但我想用AJAX处理输入,因此单独的Handler
获取结果表格。另一个处理程序无权访问UserId
。我该如何处理表格?我试过这个,这引发了一个错误:
postDemoFormR :: Handler RepJson
postDemoFormR = do
((formData, _), _) <- runFormPost $ userForm undefined
$(logDebug) $ pack $ show formData
return $ repJson ()
我可以更改userForm
的类型以接受Maybe UserId
而不仅仅是UserId
,或者为UserId
的调用构成虚假runFormPost
这些都是黑客攻击。有一种简单,干净的方法吗?
答案 0 :(得分:1)
您可以使用hiddenField,但几乎可以肯定不您真正想要的内容(任何用户只需提交就可以欺骗UserId
一个不同的价值)。假设您尝试做的事实上是说&#34;谁是当前用户&#34;,您需要某种方式在您的AJAX处理程序中安全地确定(例如requireAuthId
)。