如何玩! 2.3.x 确认cookies没有被篡改?

How does Play! 2.3.x verify cookies haven't been tampered with?

documentation 播放 2。3.x:

Of course, cookie values are signed with a secret key so the client can’t modify the cookie data (or it will be invalidated).

我很好奇 Play 验证如何签署 cookie。所以按照代码,cookies 是 parsed from the header and decoded in the Cookie helper 但是当我查看 request cookieheader 数据没有签名?

At this line 表达式 cookieHeader 的计算结果为:sessionId=72312312312369; Path=/; HTTPOnly

该值不应该还包含一个可以用应用程序密钥验证的签名值吗?

是的,应该。 PLAY_SESSION(或您将其重命名为的任何名称)必须在开头包含签名部分,例如

PLAY_SESSION=eyJhbGcxxxxxxxxx-userid...

eyJhbGcxxxxxxxxx是符号部分。在您链接到的文件中,您可以发现这部分是

第 430 行生成:https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/scala/play/api/mvc/Http.scala#L430

并在第 467 行验证:https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/scala/play/api/mvc/Http.scala#L467