問題タブ [spring-boot-starter]
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.
java - Spring-boot セキュリティは、カスタム AuthenticationProvider でロールを尊重しません
独自のカスタム認証プロバイダーを作成しています。今は静的なユーザー名とパスワードを確認しているだけですが、後でこれはより高度なものに置き換えられる予定です。まだ追加していない追加のコード。
そうは言っても、これは壊れた状態の私のコードです。
私のカスタム認証プロバイダー:
消費するセキュリティ構成は次のとおりです。
ユーザーとパスワードを指定せずにcurlを使用してエンドポイントにアクセスすると、これを実行すると、次のようになります。
正しいユーザー名とパスワードを指定すると、次のようになります。
最後に、間違ったユーザー名とパスワードを指定すると、次のようになります。
最後のポイントとして、ロールを直接機能させることはできませんが、ユーザーが認証されているかどうかをテストし、それを使用して許可を与えることはできます。役割が必要なので、これは実行可能な解決策ではありませんが、この質問に答えようとしている人にヒントを与えるかもしれません.
したがって、DeviceSecurityConfig クラスの configure メソッドを次のように変更できます。
この新しいバージョンのコードを使用すると、curl リクエストは少なくとも期待どおりに機能するように見えます (ただし、もちろんロールを追加する方法はありません)。先ほど述べたコード編集によるカールの結果は次のとおりです。
ユーザー名とパスワードなし:
パスワードが正しくありません:
次のコマンドを使用した正しいパスワードとユーザー名は、私が通常期待するエンドポイントから完全な応答を返すようになりました (省略)。
java - 独自の自動構成から WebMvcConfigurationSupport を使用する方法
Converter
を介して sを追加したいのですFormattingConversionService
が、これには @Configuration クラスを拡張する必要がありますWebMvcConfigurationSupport
。
@Configuration がプロジェクトから直接使用されている場合は問題なく動作しますが、このロジックを独自に追加するboot-starter
必要があるため、プロジェクト全体でコードを複製する必要はありません。
問題は、この @Configuration がスターター プロジェクトに移行されると、
mvcConversionService()
実行されず、かつ- RestControllers ルーティングが壊れています (つまり、リクエストが正しくマッピングされていません)。
これにアプローチする方法は?WebMvcConfigurationSupport
使用は難しい要件ではないことに注意してください。コードの抜粋からわかるように、最終的な目標は、特定の列挙型が残りのコントローラーによって大文字と小文字を区別せずに受け入れられるように構成することです。
編集@Configuration
:同じパッケージ内の他のクラスが実行されているため、自動構成プロジェクトが正しく設定されていることを追加する必要がありますWebAutoConfig.java
。WebMvcConfigurationSupport
この問題は、構成クラスの拡張(またはさらにWebMvcConfigurerAdapter
言えば) が自動構成からどのように処理されるかに関係していると考えてください。
Edit2 :これまでに作業を開始できた唯一の方法は、使用中のプロジェクトから構成クラスを拡張することです:
しかし、それはもはや自動構成ではありません。