問題タブ [owin-middleware]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - リクエストごとにアプリケーション固有のデータを保持するために OwinContext の環境を使用する必要がありますか?
リクエストごとにログ オブジェクトを保存する方法が必要です。HttpContext を使用して、これをアイテム ディクショナリに追加します。できるなら、これに HttpContext を持ち込みたくありません。以下のコードは、オブジェクトを OwinContext の Environment プロパティに格納する Unity LifeTimeManager に提案するもので、Owin ミドルウェアでアクセスできます。
次に、ミドルウェアから次のように使用できます。
Owin によって既に予約されているものを除いて、任意のキーを選択できることに気づきました。この目的で OwinContext.Environment を使用してはいけない理由はありますか? MSDN のドキュメントは、このベスト プラクティスについて曖昧です。
ここでの Darrel Miller の回答: How should I store per request data when using OWIN to Self-Host ASP.NET Web API を使用すると、要求オブジェクトのプロパティ コレクションが最適であると思います。ミドルウェアからこのオブジェクトにアクセスするにはどうすればよいですか?
angularjs - AngularJS、.NET Web API、および SPA でビューを返すときのバックエンド承認
そこで、AngularJS と .NET Web API を使用して SPA を作成したいと考えています。Angular にルーティングのほとんどを処理してもらいたいです。しかし、許可されていないユーザー (認証に関係なく) が特定のビューを取得できないようにするにはどうすればよいでしょうか? MVC はビュー全体を返し、SPA の目的を無効にするため、.NET MVC を使用せずにバックエンドでこれを実行したいと考えています。また、私の理解では、Web API にはビューをクライアントに返す役割はありません。これが正しいとすると、要求されたビューを返すときに、Web API と MVC の両方での承認が SPA で役に立たなくなります。着信 AJAX 呼び出しのヘッダーを調べて、ユーザーがビューを受信する権限があるかどうかを判断する OWIN ミドルウェアを作成することを考えました。しかし、どこから始めればよいかわかりません。承認を処理する OWIN ミドルウェアを作成することが現実的である場合、どこから始めればよいでしょうか?
これは合理的に思えますか?それとも、私はただ頭がおかしいので、.NET MVC に返されるビューを処理させるべきなのでしょうか?
補足: MVC と Web API の両方に [Authorize] 装飾があり、トークンが渡されています。認証は問題ありません。問題はAngularにあります。Angular がルーティングを処理するとき、サーバーからのビューを要求します。しかし、サーバーは .NET MVC にも Web API にもアクセスせず、MVC と Web API の両方で承認を回避します。それは単にビューを返すだけです。フロントエンド認証がありますが、それは理想的ではありません。したがって、ユーザーがビューの受信を許可されている場合に、返されるビューを処理するバックエンドが必要です。
facebook - Microsoft.Owin.Security.Facebook のチャレンジ URL の「表示」クエリ文字列フィールドを指定する
Microsoft.Owin.Security.Facebook 3.0.1 NuGet パッケージを使用して、Facebook 認証を Web API 2.2 アプリケーションに追加しています。ユーザーがログインしようとすると、Microsoft のミドルウェアが次のような URL を使用して Facebook の OAuth ダイアログにリダイレクトするようにコードを動作させています。
結果の HTTP 302 で、Facebook のポップアップ固有のバージョンの認証ダイアログをレンダリングする必要があります。Facebook のドキュメントには、display
クエリ文字列フィールドの値を に設定できると書かれていますpopup
。display
残念ながら、 Microsoft の Facebook ミドルウェアにはの設定がないようです。実際、内部Microsoft.Owin.Security.Facebook.FacebookAuthenticationHandler
クラスを逆コンパイルすると、次のコードが見つかりました。
認証ハンドラーによって生成された URL をカスタマイズすることはできないようです。
私の質問は、以前にこの問題に遭遇して解決した人はいますか? 何らかの方法でdisplay
URL に追加するために、パイプラインの他の場所でできることはありますか? Facebook の OAuth ダイアログのポップアップ バージョンを使用する必要があります。
委任ハンドラーを試してみましたが、パイプラインで生成された HTTP 401 をインターセプトしていることがわかりますが、HTTP 302 はインターセプトしません。
余談ですが、これを機能として要求する適切な場所はどこですか?
c# - HttpRequest の終了後に owin ミドルウェアが 2 回作成されるのはなぜですか
Asp.Net ID がリクエストごとに 2 回作成および破棄される理由に関する質問の後、なぜこれが発生するのかを調査しました。実際には 1 回に 1 回作成さApplicationDbContext
れることがわかりましたが、Owin パイプラインを使用すると、Owin ミドルウェアは HttpRequest の終了後に 2 回作成されます。ApplicationDbContext
HttpRequest
このためApplicationDbContext
、ユーザーが 1 つのリンクをクリックすると、実際には が 2 回作成され、オブジェクトが ごとに 2 回作成されたような印象を受けますWebRequest
。
多くの調査の後、認証を使用せずにプレーンな MVC 5 プロジェクトを開始することにしました。NuGet から Owin ミドルウェアを追加した後、次のOwin Middleware
コンポーネントに作成しました。基本的に、HttpContext
辞書に偽のオブジェクトが存在するかどうかを確認し、存在しない場合は作成します。単純にするために、出力はデバッグ ウィンドウに書き込まれます。
次に、これを のIndex
ActionMethod に追加してHomeController
、作成されたオブジェクトがまだ存在するかどうかを確認しました。
実行すると、出力ウィンドウに次の出力が表示されます (わかりやすくするためにコメントを追加)。
では、なぜ、コメントの後にend of 'normal' request
、ミドルウェアが作成され、再度入力されるのでしょうか。誰にもアイデアや説明がありますか?
再現する手順:
- 認証なしで VS 2013 で新しい MVC 5 プロジェクトを開始する
Install-Package Microsoft.Owin.Host.SystemWeb
パッケージ マネージャーを使用して NuGet から Owin を追加する- 上記のようにスタートアップ クラスをプロジェクトに追加します。
Index
のActionMethod にコードを追加します。HomeController
- デバッグモードで F5 を押します
- スタート ページの [ホーム] リンクをクリックします。
- 出力 (または VS セットアップに応じて即時) ウィンドウで出力を確認します。
owin - HelloWorldComponent と System.Func`2[System.Collections.Generic.IDictionary`2 の間で利用できる変換はありません // パラメータ名: signature
Pluralsight で Scott Allen の MVC 5 Fundamentals コースに取り組んでいます。
以下のコードの "using (WebApp.Start(uri)) " でエラーが発生します。
エラーは
コードは
packages.config は
このメッセージを受け取るのに使用していなかったので、何が変わったのだろうか
c# - C# Owin Self Host - 予想されるヘッダー 100-continue
セルフホスティングで OWIN を使用すると問題が発生しました。コンソール アプリケーションから Web サーバーを実行しています。IIS では実行されていません。
HTTP 100-continue 仕様: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3
OWIN 100-continue 仕様: http://owin.org/html/owin.html
何を/どこで/どのように処理する必要がありますか:リクエストの 100-continueヘッダー? シンプルなブートストラップを使用しています: