C# MachineKey.编码不工作
我试图用Machine.Encode方法对asp.net 4.0中的cookie进行加密,但出现编译错误。错误位于“Response.Cookies.Add”行。什么是正确的方法 错误2参数1:无法从“字符串”转换为 “System.Web.HttpCookie”错误1与的最佳重载方法匹配 “System.Web.HttpCookieCollection.Add(System.Web.HttpCookie)”有一些 无效参数 正如错误明确指出的那样,C# MachineKey.编码不工作,c#,asp.net,cookies,C#,Asp.net,Cookies,我试图用Machine.Encode方法对asp.net 4.0中的cookie进行加密,但出现编译错误。错误位于“Response.Cookies.Add”行。什么是正确的方法 错误2参数1:无法从“字符串”转换为 “System.Web.HttpCookie”错误1与的最佳重载方法匹配 “System.Web.HttpCookieCollection.Add(System.Web.HttpCookie)”有一些 无效参数 正如错误明确指出的那样,Cookies.Add()接受一个HttpCo
Cookies.Add()
接受一个HttpCookie
对象,而不是字符串
您需要使用密文以及cookie的任何选项(例如
安全或HttpOnly
)来构造HttpCookie
。您所犯错误的混淆之处是什么?您不了解错误的哪一部分?MachineKey.Encode
会造成安全漏洞。您必须阅读@ayha,您可能想加密customerId。这就是您所需要的
public static string MachEncrypt (string plaintextValue)
{
var plaintextBytes = Encoding.UTF8.GetBytes (plaintextValue);
return MachineKey.Encode (plaintextBytes, MachineKeyProtection.All);
}
public static string MachDecrypt (string encryptedValue)
{
try
{
var decryptedBytes = MachineKey.Decode (encryptedValue, MachineKeyProtection.All);
return Encoding.UTF8.GetString (decryptedBytes);
}
catch
{
return null;
}
}
HttpCookie myCookie = new HttpCookie("co");
myCookie.Values.Add("customerId", dr["customerId"].ToString());
if (chkRemember.Checked)
{
myCookie.Expires = DateTime.Now.AddDays(30);
}
Response.Cookies.Add(StringEncryptor.MachEncrypt(myCookie.ToString()));