def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
session[:foo] = "bar"
session[:user_id] = user.id
redirect_to root_url, notice: "Signed in!"
else
flash.now[:error] = "Email or password is invalid."
render "new"
end
end
当我解码base64 cookie时,我得到:
{I"session_id:EFI"%14cd484a34917f7d923ef8222c16e0e1;TI"foo;FI"bar;FI"_csrf_token;FI"1ajWlOZok1Amp8Nh9uOdUWzeM20b873zocEbyiR+b1ao=;FI"user_id;Fi }
我的session[:foo]
是如何设置的,而不是我的session[:user_id]
?
答案 0 :(得分:1)
在我看来它已设置,但user_id
的值是Marshal.dump
输出(这是cookie存储的)是不可打印或空白字符。如果您对以这种方式只影响user_id
的原因感兴趣,您必须查看编组格式的详细信息(似乎没有广泛记录)。我想用整数ruby基本上吐出字节值,这通常会导致unprintables。
我不知道你是如何进行base64解码的,但如果你在ruby控制台中这样做,那么inspect的默认输出会显示不可打印的字符