haskell - 使用加盐密码创建用户以使用 AuthEmail 而不是 Auth.Dummy
问题描述
我正在尝试在 yesod 脚手架站点(postgres)的测试套件中用 Auth.Email 替换 Auth.Dummy,但是在创建用户时我无法设法对密码进行加盐。
我在 Foundation.hs 上设置了 Auth.Email,它工作正常。我还将 authenticateAs 函数设置为通过 Auth.Email 登录进行身份验证。但是在运行测试时,身份验证失败。我相信这是因为保存的密码没有加盐。我怎样才能给密码加盐?
测试导入.hs
authenticateAs :: Entity User -> YesodExample App ()
authenticateAs (Entity _ u) = do
request $ do
setMethod "POST"
addPostParam "email" $ userEmail u
addPostParam "password" "secret"
setUrl $ AuthR $ PluginR "email" ["login"]
createUser :: Text -> YesodExample App (Entity User)
createUser ident = runDB $ do
user <- insertEntity User
{ userEmail = ident
, userPassword = Just "secret"
, userVerkey = Nothing
, userVerified = True
}
return user
在 test/Handler/Profile.hs
it "asserts access to my-account for authenticated users" $ do
userEntity <- createUser "foo"
authenticateAs userEntity
get ProfileR
statusIs 200
如何使用加盐密码创建用户?
这是我收到的错误消息Ç:
asserts access to my-account for authenticated users FAILED [1]
2.0.0.0 - - [29/May/2019:13:39:35 +0900] "POST /auth/page/email/login HTTP/1.1" 303 0 "" ""
2.0.0.0 - - [29/May/2019:13:39:35 +0900] "GET /profile HTTP/1.1" 403 3105 "" ""
Failures:
test/Handler/ProfileSpec.hs:20:13:
1) Handler.Profile, Profile page, asserts access to my-account for authenticated users
Expected status was 200 but received status was 403
解决方案
推荐阅读
- ios - GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTransport.h' 文件未找到
- python - 按特定日期过滤日期框
- selenium - Chromedriver - 无头时不接受选定的语言环境
- azure - Azure 路由查询
- java - JPanel 未添加新组件
- networkx - 街道网络中的最短路径
- kubernetes - 遍历 helm 中的值列表时出错
- google-cloud-platform - 如何从谷歌云下载 Minecraft 世界文件?
- django - Django Rest Framework - 过滤同一字段上的多个值(OR)
- python - 调整数据框的大小