1

まず第一に、あなたがこのサイトで与えてくれた多大な助けに感謝します!

さて、私は要点を正しく説明します。私は春の初心者であり、新しいWebアプリを作成するためにappfuseを使用しました。最初のアイデアは、フロントエンドを備えた単純なプラットフォームを作成してから、外部クライアントから残りのサービスを呼び出すことでした。

重要なのは、(ページとRESTサービス)が異なる認証方法を使用できるsecurity.xmlファイルを定義できないということです。

私のアイデアは、ページのログインフォームと、サービスのURLパラメータに基づくオーセンティケータでしたが、取得するのは例外だけです。

ユニバーサルマッチパターン('/ **')は、フィルターチェーン内の他のパタ​​ーンの前に定義されているため、無視されます。」

それぞれを別々に試しましたが、同じファイルにまとめると例外が発生します。

 <http pattern="/images/**" security="none"/>
    <http pattern="/styles*/**" security="none"/>
    <http pattern="/scripts*/**" security="none"/>
    <http pattern="/assets*/**" security="none"/>   
    <http entry-point-ref="restAuthenticationEntryPoint">
      <intercept-url pattern="/services/**" access="ROLE_ADMIN,ROLE_ADMIN,ROLE_USER"/>
      <custom-filter ref="myFilter" position="FORM_LOGIN_FILTER"/>
      <logout />
   </http>
    <beans:bean id="myFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
      <beans:property name="authenticationManager" ref="authenticationManager"/>
      <beans:property name="authenticationSuccessHandler" ref="mySuccessHandler"/>
   </beans:bean>
    <beans:bean id="mySuccessHandler" class="org.bringer.webapp.authentication.MyAuthSuccessHandler"/>    
    <http auto-config="true" access-denied-page="/accessdenied">
        <intercept-url pattern="/login*/**" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <intercept-url pattern="/admin/*" access="ROLE_ADMIN"/>
        <intercept-url pattern="/passwordhint*/**" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <intercept-url pattern="/signup*" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER"/>
        <form-login login-page="/login" 
                    default-target-url="/home" 
                    always-use-default-target="true"  
                    authentication-failure-url="/login/error" 
                    login-processing-url="/j_security_check"/>                    
        <remember-me user-service-ref="userDao" key="e37f4b31-0c45-11dd-bd0b-0800200c9a66"/>
    </http>
    <authentication-manager alias="authenticationManager">
        <authentication-provider user-service-ref="userDao">
            <password-encoder ref="passwordEncoder">
                <salt-source ref="saltSource"/>
            </password-encoder>
        </authentication-provider>
    </authentication-manager>   
    <beans:bean id="saltSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource"
        p:userPropertyToUse="username"/>   
    <global-method-security>
        <protect-pointcut expression="execution(* *..service.UserManager.getUsers(..))" access="ROLE_ADMIN"/>
        <protect-pointcut expression="execution(* *..service.UserManager.removeUser(..))" access="ROLE_ADMIN"/>
    </global-method-security>

「/**」パターンを削除しましたが、例外しかありません。

誰かが私を正しい方向に向けてくれませんか?どんな助けでも大歓迎です。

4

1 に答える 1

0

解決しました!

これは私がそれを解決するのを助けたsecurity.xmlです

    <http pattern="/services/**" create-session="stateless">
        <intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER" />
        <http-basic />
    </http>
    <http pattern="/login*/**" security="none"/>    
    <http auto-config="true" access-denied-page="/accessdenied">       
        <intercept-url pattern="/admin/*" access="ROLE_ADMIN"/>
        <intercept-url pattern="/passwordhint*/**" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <intercept-url pattern="/signup*" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER"/>
        <form-login login-page="/login" 
                    default-target-url="/home" 
                    always-use-default-target="true"  
                    authentication-failure-url="/login/error" 
                    login-processing-url="/j_security_check"/>                    
        <remember-me user-service-ref="userDao" key="e37f4b31-0c45-11dd-bd0b-0800200c9a66"/>
    </http>
于 2014-09-05T07:16:14.870 に答える