自動生成されたSpringSecurityログインページに接続できません。ドキュメントによると、security-context.xmlに次の行を含めると、Springはhtmlログインフォームを生成し、特定のURLに接続しようとしたときにユーザーをそのフォームにリダイレクトします。
<http auto-config="true" >
<intercept-url pattern="/management-console" access="ROLE_ADMIN"/>
</http>
<authentication-manager ... />
これが私の構成の残りです。Web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/context/applicationContext.xml <!-- I am importing my security-context.xml in here -->
<param-value>
</context-param>
<!-- Security Configuration -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/management-console</url-pattern>
</filter-mapping>
security-context.xmlをweb.xmlに直接インポートしようとしましたが、それでもエラーが表示されます。
アプリケーションをデプロイした後、指定した各URLに問題なく接続できます。ただし、localhost:{port} / {appName} / management-consoleに移動しようとすると、フィルターチェーンによって/ spring_security_loginにリダイレクトされます(予想どおり)。ただし、転送されてコンソールに次のメッセージが表示されると、「HTTPステータス405-リクエストメソッド'GET'はサポートされていません」というエラーが表示されます(spring-mvcはサーブレットに付けた名前です)。
org.springframework.web.servlet.PageNotFound | No mapping found for HTTP request with URI [/InternalManagementViewer/spring_security_login] in DispatcherServlet with name 'spring-mvc' |
コントローラでPOST/GETマッピングを宣言し忘れたときに、このエラーが発生しました。ドキュメントによると、/ spring_security_loginマッピングを処理するために、コントローラーにそのようなメソッドを含める必要はありません。私が読んだことから、springは自動生成されたログインhtmlページを返すことを知っているはずです。
何が起こるかを確認するために、コントローラーで/spring_security_loginマッピングを処理するメソッドを宣言しました。この関数はvoidを返すため(生成されたhtmlログインページのローカルビュー名がわからないため)、プロジェクトで明示的に作成されていない「spring_security_login.jsp」という名前のリソースを検索します。 「HTTPリソースが見つかりません」エラー。
私はこれに困惑していて、本当に手を使うことができました。ご覧いただきありがとうございます。