在 rails 中解码已签名的 cookie?
Decode a signed cookie in rails?
所以我有一个具有以下值的签名 cookie
IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci--a3c3b748fd207ba1c537b590dd458b4855677146
我需要对其进行解码并得到以下值
5oTgH9miQN8BI94VYR_Tvw
我试过
Base64.decode64(cookie_value.split('--').first)
但它给了我错误的值,它在字符串中添加了这些该死的斜线,所以我最终得到
"\"5oTgH9miQN8BI94VYR_Tvw\""
请试试这个
require 'rack'
puts Rack::Session::Cookie::Base64::Marshal.new.decode("IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci")
也可以解密
Marshal.load(ActiveSupport::Base64.decode64(the_cookie_value.split("--").first)
but it gives me the wrong value, it adds these damn slashes in the
string so I end up with
"\"5oTgH9miQN8BI94VYR_Tvw\""
它没有添加任何斜杠。这里的问题是您返回的字符串包含在双引号 "
之间。 \"
这里是转义字符。
这里:
Base64.decode64 "IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci"
# => "\"5oTgH9miQN8BI94VYR_Tvw\""
puts Base64.decode64 "IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci"
# "5oTgH9miQN8BI94VYR_Tvw"
由于问题是不需要的 "
s。您可以按如下方式删除它们:
Base64.decode64(cookie_value.split('--').first).chomp('"').reverse.chomp('"').reverse
# => "5oTgH9miQN8BI94VYR_Tvw"
我最终使用了以下内容:
MultiJson.load(Base64.decode64(cookie_value.split('--').first))
可能只适用于 rails 4.1 +,虽然我不确定
所以我有一个具有以下值的签名 cookie
IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci--a3c3b748fd207ba1c537b590dd458b4855677146
我需要对其进行解码并得到以下值
5oTgH9miQN8BI94VYR_Tvw
我试过
Base64.decode64(cookie_value.split('--').first)
但它给了我错误的值,它在字符串中添加了这些该死的斜线,所以我最终得到
"\"5oTgH9miQN8BI94VYR_Tvw\""
请试试这个
require 'rack'
puts Rack::Session::Cookie::Base64::Marshal.new.decode("IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci")
也可以解密
Marshal.load(ActiveSupport::Base64.decode64(the_cookie_value.split("--").first)
but it gives me the wrong value, it adds these damn slashes in the string so I end up with
"\"5oTgH9miQN8BI94VYR_Tvw\""
它没有添加任何斜杠。这里的问题是您返回的字符串包含在双引号 "
之间。 \"
这里是转义字符。
这里:
Base64.decode64 "IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci"
# => "\"5oTgH9miQN8BI94VYR_Tvw\""
puts Base64.decode64 "IjVvVGdIOW1pUU44Qkk5NFZZUl9Udnci"
# "5oTgH9miQN8BI94VYR_Tvw"
由于问题是不需要的 "
s。您可以按如下方式删除它们:
Base64.decode64(cookie_value.split('--').first).chomp('"').reverse.chomp('"').reverse
# => "5oTgH9miQN8BI94VYR_Tvw"
我最终使用了以下内容:
MultiJson.load(Base64.decode64(cookie_value.split('--').first))
可能只适用于 rails 4.1 +,虽然我不确定