我是网络应用程序开发的新手。刚刚开始学习Sinatra框架。我正在开发一个登录系统。 这是必要的代码:
require 'sinatra'
require 'openssl'
require 'encrypted_cookie'
configure do
use Rack::Session::EncryptedCookie, :secret => "foo-bar-baz", :httponly => true
然后,如果他/她获得授权,我会在会话中存储用户名:
post '/' do
if authorize(params[:name], params[:password], params[:csrfkey])
session[:name] = params[:name]
end
end
cookie可以加密。它还记住了会话值。
但是在使用Firebug时,我注意到在每次请求(页面加载,刷新等)时,cookie的内容都会被更改。我的意思是彻底改变了似乎Sinatra在每次请求时都会发送新的cookie。
以前,我使用的是enable :sessions
&饼干永远不会改变。
所以我的问题是,在会话期间每次请求都更改cookie的内容是否正常?
是否因为加密而发生?
我搜索了高和低在网上低,但没有人有这个问题,我猜..
答案 0 :(得分:4)
source for encrypted_cookie显示generates different encrypted output every time it is called regardless of the input。这有两个原因: