是否可以在BeginRequest中设置auth cookie?

时间:2013-11-13 06:12:24

标签: asp.net-mvc authentication cookies asp.net-mvc-5

我正在与可以阅读但不发送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应用程序。

1 个答案:

答案 0 :(得分:0)

在BeginRequest之前调用Owins框架。此外,Owins请求上下文是只读的。所以是的,使用Owins不可能添加到cookie中。

...但是可以创建自己的owins中间件来读取标头值并“取消保护”AuthenticationTicket。解决方案基于Cookie Middleware

相关问题