我正在与可以阅读但不发送cookie的客户合作。这是一个问题,因为客户端要发布到经过身份验证的方法。我认为一个简单的解决方法是在标题中发送cookie信息,在BeginRequest中拦截它并将伪装的cookie附加到请求中。由于开始请求发生在身份验证之前我认为它会起作用。它没有。
这是我目前的方法。
protected void Application_BeginRequest()
{
// I have added the auth cookie to the header
var a = Request.Headers["Authorization"];
if (a == null) return;
// get cookie value
var s = a.Replace(".AspNet.ApplicationCookie=", "");
// I am injecting the cookie into the request
var c = new HttpCookie(".AspNet.ApplicationCookie", s);
Request.Cookies.Add(c);
}
我设置了断点来观察“真正的”cookie并且它匹配我的“伪造”cookie。我做错了什么还是我在尝试不可能的事情?此外,如果任何人有任何想法我如何使用cookie信息授权用户我会很满。
这是一个使用现在标准的Owins库的MVC5应用程序。
答案 0 :(得分:0)
在BeginRequest之前调用Owins框架。此外,Owins请求上下文是只读的。所以是的,使用Owins不可能添加到cookie中。
...但是可以创建自己的owins中间件来读取标头值并“取消保护”AuthenticationTicket。解决方案基于Cookie Middleware。