MachineKey.Encode不起作用

时间:2013-08-27 14:07:16

标签: c# asp.net cookies

我正在尝试使用Machine.Encode方法加密asp.net 4.0中的cookie但我收到编译错误。错误在“Response.Cookies.Add”行。什么是正确的方法?

  

错误2参数1:无法从'string'转换为   'System.Web.HttpCookie'错误1最佳重载方法匹配   'System.Web.HttpCookieCollection.Add(System.Web.HttpCookie)'有一些   无效的参数

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()));

1 个答案:

答案 0 :(得分:1)

由于错误明确表明,Cookies.Add()采用HttpCookie对象,而不是字符串。

您需要使用密文构建HttpCookie,以及Cookie的所有选项(例如SecureHttpOnly)。