1

自動生成された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リソースが見つかりません」エラー。

私はこれに困惑していて、本当に手を使うことができました。ご覧いただきありがとうございます。

4

1 に答える 1

2

springSecurityFilterChainすべてのURLにフィルターを適用します。

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

springSecurityFilterChainは、すべてのSpringSecurity機能のエントリポイントです。したがって、このフィルターが一部のURLに適用されていない場合、そこでSpring Securityを使用することはできません(この場合は/ spring_security_login URLを処理します)。

于 2013-03-11T15:32:38.717 に答える