我有一个网站,我在其中创建了一个自定义cookie,我正在尝试读取在IIS中运行的自定义重写提供程序中的cookie值
简而言之:如何解密自定义URL重写提供程序中的cookie?
以下是创建自定义Cookie的代码
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
model.Email,
DateTime.Now,
DateTime.Now.AddDays(7),
true,
"deepak",
FormsAuthentication.FormsCookiePath);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie fCookie = new HttpCookie("customCookie", encryptedTicket);
fCookie.Expires = DateTime.Now.AddDays(7);
fCookie.Path = "/";
Response.Cookies.Add(fCookie);
下面的代码是读取IIS中运行的自定义重写提供程序中的cookie值
public class ParseUserNameProvider : IRewriteProvider, IProviderDescriptor
{
public IEnumerable<SettingDescriptor> GetSettings()
{
throw new NotImplementedException();
}
public void Initialize(IDictionary<string, string> settings, IRewriteContext rewriteContext)
{}
public string Rewrite(string value)
{
string[] val = value.Split('=');
string name = "";
if (val != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(val[1]);
if(authTicket!=null)
{
name = authTicket.Name;
}
}
return name;
}
}
重写IIS中的设置 - InBound
重定向网址
http://1x2.xx.1x8.x8:1111/Report/Report?name= {ParseUserNameProvider:{C:0}}
条件
了解到的注意:此帖子与Custom Rewrite Provider for URL Rewrite Module不重复,因为我收到了不同的错误。
答案 0 :(得分:1)
如果该域中有任何其他Cookie,则它们将作为val [1]的一部分包含在一个长字符串中。我很难让IIS可靠地通过一个cookie,所以我将所有的cookie拉到val [1]字符串中,然后将其拆分成所有cookie值的数组,然后选择我需要的那个。如果有疑问,请让您的提供商将val [1]字符串作为客户错误,以便您可以看到它所看到的内容。
data:'id='+ID,
一旦你可以看到实际收到的内容,你就可以了解如何分割它。