我正在尝试为使用Happstack框架编写的web应用程序实现简单的基于密码的身份验证。我的用户提供了一个ID和密码,我使用bcrypt对其进行散列,并通过数据库进行检查。如果散列后的密码在该ID的数据库中,则用户将通过身份验证。
一旦我对好用户进行了身份验证,我就想发布一个会话cookie,标记该用户在会话期间已经登录。(我不是试图实现"持久"、"记住我"之类的cookie;我只是想知道用户是否登录了会话。)
仅存在会话cookie就足以对用户进行身份验证吗?如果没有,还需要什么其他信息?我可以将cookie的(哈希)值存储在我的数据库中,但在这一点上,我看不出我将要做的与持久登录cookie有多大不同。
简而言之,我是否可以使用会话cookie来识别经过身份验证的用户,如果可以,该如何进行?
(我已经学会了如何以及为什么将会话cookie标记为"安全"one_answers"仅HTTP",但我不知道该用这个该死的东西做什么!)
您可以对现有的密码登录解决方案使用happstack身份验证。如果你仍然想自己滚动,那么你会想要happstack clientsession包,用于用户无法读取或写入的会话cookie。标记为"安全"的普通cookie仅意味着它只能通过HTTPS工作,但用户仍然可以读取和写入cookie。对于clientsession,cookie将使用服务器端密钥进行加密。您可以将clientsession用于"记住我"和会话登录;它只是取决于您将sessionCookieLife
设置为什么。如果您使用mkSessionConf
,则默认为Session
,这就是您想要的。