記録するプロパティを追加するにはどうすればよいですか?

Trung Do

したい

  1. httpリクエストからjwtを抽出します
  2. jwtからクレームを取得する
  3. コマンドモデルにクレームを追加する

以下のように

let middleware<'a> handler next (ctx: HttpContext) =
    task {
        let token = ctx.Request.Headers.["Authorization"].ToString()
        match token with
        | Bearer token ->
            let claims = getClaims token
            let! command = ctx.BindJsonAsync<'a>()
            // how to add claims to command?
            return! handler command next ctx

        | _ ->
            return! RequestErrors.unauthorized "Bearer" "Commerce" authenticationError next ctx
    }

3番目のステップを実行するにはどうすればよいですか?

褐色

私がここで考えることができる4つのオプションがあります。

  1. JWT承認プロパティをコマンドモデルに追加し、呼び出したときにそれらをバインドしないようにしてBindJsonAsync、データを入力することができます。これは、モデルを送信する人が設定できるプロパティになってしまうため、私の最も嫌いなアプローチです。

  2. 匿名レコードを使用して、レコードタイプにプロパティを追加できます。このアプローチでは、汎用モデルバインディングを使用しているように見えるため、ここで問題を引き起こす可能性のあるコマンドのタイプを知る必要があります。また、バイナリの境界を越えて型を渡すのが難しくなります。

type CommandHandler = { Command : string; Entity : int }
let command = { Command = "Update"; Entity = 1 }
let authorisedCommand = {| command with AuthToken = "ey ===" |}
  1. 追加のプロパティを除いて、モデルバインディングに使用するタイプのコピーである新しいタイプを作成できますが、これも、コピーする固定タイプを知る必要があり、すべてのプロパティをコピーする必要があることを意味します。
type CommandHandlerModel = { Command : string; Id : int }
type AuthorisedCommandHandlerModel = { Command : string; Id : int }
let commandHandler = { CommandHandlerModel.Command = "Update"; Id = 1 }
let authedCommandHandler = { AuthporosedCommandHandlerModel.Command = "Update"; Id = 1 }
  1. 私がおそらく取るアプローチは、次のような新しいタイプでコマンドをラップすることです。
type CommandHandlerModel = { Command : string; Id : int }
type AuthorisedCommandHandlerModel<'a> = { CommandModel : 'a; AuthToken : string }
let! command = ctx.BindJsonAsync<'a>()
let authedCommand = { CommandModel = command; AuthToken = claims }

この構成的アプローチは、問題を解決するためのより慣用的な方法であり、過去に使用したアプローチであると感じました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

WSO2 ESBプロパティの値を分割し、文字を分割した後にログを記録するにはどうすればよいですか?

分類Dev

JSON配列に新しいプロパティを追加するにはどうすればよいですか?

分類Dev

C#でプロパティ名に「+」を追加するにはどうすればよいですか?

分類Dev

C#でプロパティ名に「+」を追加するにはどうすればよいですか?

分類Dev

継承を含むArrayListsにプロパティを追加するにはどうすればよいですか?

分類Dev

FluentValidationに非プロパティルールを追加するにはどうすればよいですか?

分類Dev

モデルに画像プロパティを追加するにはどうすればよいですか?

分類Dev

typescriptの既存の型にプロパティを追加するにはどうすればよいですか?

分類Dev

列にHIDDENプロパティを追加するにはどうすればよいですか?

分類Dev

mapbox ios sdkのMGLFillStyleLayerにlinewidthプロパティを追加するにはどうすればよいですか?

分類Dev

Quasarにカスタムプロパティを追加するにはどうすればよいですか?

分類Dev

モデルにプロパティを追加するにはどうすればよいですか?

分類Dev

ノードにプロパティを追加するにはどうすればよいですか?

分類Dev

topojsonファイルにプロパティを追加するにはどうすればよいですか?

分類Dev

要素にプロパティを追加するにはどうすればよいですか?

分類Dev

UIViewControllerのビュープロパティにdidSetを追加するにはどうすればよいですか?

分類Dev

このプロパティをJsonConvertに追加するにはどうすればよいですか?

分類Dev

このプロパティをJsonConvertに追加するにはどうすればよいですか?

分類Dev

ルビー変数にプロパティを追加するにはどうすればよいですか?

分類Dev

QInputDialog に「whats this」プロパティを追加するにはどうすればよいですか?

分類Dev

kotlinpoetの関数内にプロパティを追加するにはどうすればよいですか

分類Dev

lineCapプロパティをキャンバスに追加するにはどうすればよいですか?

分類Dev

redux状態でプロパティを追加/変更するにはどうすればよいですか?

分類Dev

redux状態でプロパティを追加/変更するにはどうすればよいですか?

分類Dev

プロパティのPropertyChangedイベントを追加するにはどうすればよいですか?

分類Dev

Spring Bootアプリケーションでアクティブな構成をログに記録するにはどうすればよいですか?

分類Dev

ReactNativeアプリでHTTPPOST応答をログに記録するにはどうすればよいですか?

分類Dev

javascriptのテストをログに記録するにはどうすればよいですか?

分類Dev

既存のプロパティにいくつかのcssプロパティを追加するにはどうすればよいですか?

Related 関連記事

  1. 1

    WSO2 ESBプロパティの値を分割し、文字を分割した後にログを記録するにはどうすればよいですか?

  2. 2

    JSON配列に新しいプロパティを追加するにはどうすればよいですか?

  3. 3

    C#でプロパティ名に「+」を追加するにはどうすればよいですか?

  4. 4

    C#でプロパティ名に「+」を追加するにはどうすればよいですか?

  5. 5

    継承を含むArrayListsにプロパティを追加するにはどうすればよいですか?

  6. 6

    FluentValidationに非プロパティルールを追加するにはどうすればよいですか?

  7. 7

    モデルに画像プロパティを追加するにはどうすればよいですか?

  8. 8

    typescriptの既存の型にプロパティを追加するにはどうすればよいですか?

  9. 9

    列にHIDDENプロパティを追加するにはどうすればよいですか?

  10. 10

    mapbox ios sdkのMGLFillStyleLayerにlinewidthプロパティを追加するにはどうすればよいですか?

  11. 11

    Quasarにカスタムプロパティを追加するにはどうすればよいですか?

  12. 12

    モデルにプロパティを追加するにはどうすればよいですか?

  13. 13

    ノードにプロパティを追加するにはどうすればよいですか?

  14. 14

    topojsonファイルにプロパティを追加するにはどうすればよいですか?

  15. 15

    要素にプロパティを追加するにはどうすればよいですか?

  16. 16

    UIViewControllerのビュープロパティにdidSetを追加するにはどうすればよいですか?

  17. 17

    このプロパティをJsonConvertに追加するにはどうすればよいですか?

  18. 18

    このプロパティをJsonConvertに追加するにはどうすればよいですか?

  19. 19

    ルビー変数にプロパティを追加するにはどうすればよいですか?

  20. 20

    QInputDialog に「whats this」プロパティを追加するにはどうすればよいですか?

  21. 21

    kotlinpoetの関数内にプロパティを追加するにはどうすればよいですか

  22. 22

    lineCapプロパティをキャンバスに追加するにはどうすればよいですか?

  23. 23

    redux状態でプロパティを追加/変更するにはどうすればよいですか?

  24. 24

    redux状態でプロパティを追加/変更するにはどうすればよいですか?

  25. 25

    プロパティのPropertyChangedイベントを追加するにはどうすればよいですか?

  26. 26

    Spring Bootアプリケーションでアクティブな構成をログに記録するにはどうすればよいですか?

  27. 27

    ReactNativeアプリでHTTPPOST応答をログに記録するにはどうすればよいですか?

  28. 28

    javascriptのテストをログに記録するにはどうすればよいですか?

  29. 29

    既存のプロパティにいくつかのcssプロパティを追加するにはどうすればよいですか?

ホットタグ

アーカイブ