Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 会话cookie是否足以进行身份验证?_Authentication_Web Applications_Session Cookies_Happstack - Fatal编程技术网

Authentication 会话cookie是否足以进行身份验证?

Authentication 会话cookie是否足以进行身份验证?,authentication,web-applications,session-cookies,happstack,Authentication,Web Applications,Session Cookies,Happstack,我正在尝试为使用Happstack框架编写的web应用程序实现简单的基于密码的身份验证。我的用户提供了一个ID和密码,我使用bcrypt对其进行散列,并通过数据库进行检查。如果散列密码位于该ID的数据库中,则会对用户进行身份验证 一旦我对nice用户进行了身份验证,我想发布一个会话cookie,它标记该用户在会话期间已经登录。(我不是要实现“持久”、“记住我”之类的cookie;我只是想知道用户是否登录了会话。) 仅存在会话cookie就足以对用户进行身份验证吗? 如果没有,还需要哪些其他信息?

我正在尝试为使用Happstack框架编写的web应用程序实现简单的基于密码的身份验证。我的用户提供了一个ID和密码,我使用bcrypt对其进行散列,并通过数据库进行检查。如果散列密码位于该ID的数据库中,则会对用户进行身份验证

一旦我对nice用户进行了身份验证,我想发布一个会话cookie,它标记该用户在会话期间已经登录。(我不是要实现“持久”、“记住我”之类的cookie;我只是想知道用户是否登录了会话。)

仅存在会话cookie就足以对用户进行身份验证吗? 如果没有,还需要哪些其他信息?我可以将cookie的(散列)值存储在我的数据库中,但在这一点上,我看不出我所做的与持久登录cookie有多大的不同

简而言之,我是否可以使用会话cookie来识别经过身份验证的用户,如果可以,应该如何做


(我已经学会了如何以及为什么将会话cookie标记为“安全”和“仅HTTP”,但我不知道该怎么处理这个该死的东西!)

您可以使用现有的密码登录解决方案。但是,如果您仍然想要自己的应用程序,那么您需要用户无法读取或写入的会话cookie包。标记为“安全”的普通cookie仅表示它只能通过HTTPS工作,但用户仍然可以读写cookie。使用clientsession,cookie将使用服务器端密钥加密。您可以使用clientsession进行“记住我”和会话登录;这完全取决于您将
sessionokielife
设置为什么。如果您使用
mkSessionConf
的默认值是
Session
,这正是您想要的。

应该注意的是,经过身份验证的用户和授权的用户之间有着明显的区别。@AndrewSledge谢谢,我已经脱离了我通常的职责范围。编辑是否有帮助?感谢您的帮助,这最终会很好,但happstack authenticate尚未准备好用于happstack 7。而happstack clientsession对于我的问题来说是过度的。实际上,
happstack authenticate
是针对happstack 7的,而
happstack clientsession
正是针对像您这样的情况而存在的。从长远来看,我们也希望实现服务器端会话,但这很难扩展。如果您只需要简单的服务器端会话,您可以使用
entropy
包生成一个客户端ID,并将其放入一个普通的会话cookie中,然后在数据库中的每个请求(例如,acid状态或只是mvar)映射到经过身份验证的用户时查找该客户端ID。任何更简单的东西都可能是不安全的。好的,谢谢。Jeremy告诉我happstack身份验证还没有准备好进行部署,而且比我需要的要复杂得多。我是一个几乎无法理解的人。满满的快乐让我头晕目眩。我无法理解
ClientSession
接口,我想在客户端存储的唯一“数据”是一个类型为()的值,意思是“我在这里”。问题是普通cookie可以被客户端伪造,因此,当您需要自己实现安全层时,解决方案变得越来越复杂。我认为这是防止伪造(但不是盗窃)的证据。在我看来,答案似乎是“会话cookie什么都买不到;使用持久登录cookie时所需的所有预防措施。”或者可能是“将其视为持久登录cookie,除非您不必担心其过期。(孩子,我讨厌可用性和安全性之间的战争。)