我正在尝试为使用Happstack框架编写的Web应用程序实现简单的基于密码的身份验证。我的用户提供了一个ID和密码,我使用bcrypt进行哈希并通过数据库进行检查。如果散列密码位于该ID的数据库中,则由此对用户进行身份验证。
一旦我验证了好用户,我希望发出一个会话cookie,标记用户已在会话期间登录。 (我不试图实现“持久性”,“记住我”类型的cookie;我只是想知道用户是否已登录该会话。)
会话cookie的存在是否足以对用户进行身份验证? 如果没有,还需要哪些其他信息?我可以将cookie的(散列)值存储在我的数据库中,但此时,我看不出我将要做什么与持久登录cookie有很大不同。
简而言之,是否可以使用会话Cookie来识别经过身份验证的用户,如果是,应该如何处理?
(我已经能够学习如何以及为什么将会话cookie标记为“安全”和“仅限HTTP”,但我无法弄清楚做什么与该事情有关! )
答案 0 :(得分:1)
您可以使用happstack-authenticate作为密码登录的现有解决方案。如果您仍然想要自己推送,那么您将需要用于会话cookie的happstack-clientsession包,用户无法读取或写入。标记为“安全”的普通cookie仅表示它仅适用于HTTPS,但用户仍然可以读取和写入cookie。使用clientsession,cookie将使用服务器端密钥进行加密。你可以使用clientsession来“记住我”和会话登录;它只取决于你设置sessionCookieLife
的内容。如果您使用mkSessionConf
,则默认为Session
,这是您想要的。