0

読み取りはできるが Cookie を送信できないクライアントを使用しています。クライアントは認証されたメソッドに投稿するため、これは問題です。簡単な回避策は、Cookie 情報をヘッダーで送信し、BeginRequest でインターセプトして、作成した Cookie をリクエストに添付することだと考えました。認証の前にbeginリクエストが発生するので、うまくいくと思いました。それはしませんでした。

これが私の現在の方法です。

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 アプリケーションです。

4

1 に答える 1

0

Owins フレームワークは、BeginRequest の前に呼び出されます。さらに、Owins リクエスト コンテキストは読み取り専用です。そうです、Owins を使用して Cookie に追加することは不可能です。

... しかし、ヘッダー値を読み取り、AuthenticationTicket を「保護解除」する独自の owins ミドルウェアを作成することは可能です。このソリューションはCookie Middlewareに基づいています。

于 2013-11-13T07:22:46.920 に答える