2017-03-07 5 views
-1

私は、AngularJS 1.3フロントエンドとSpring API-RESTを持つアプリケーションを持っています。AngularJSとSpringでルーティングが正しくない

  1. 私は、アプリケーションへのログイン:ログインのために私がセッション(ノーJWT)を使用してい

    、私はこの問題を抱えています。

  2. アプリケーションをナビゲートします。
  3. セッションが失われたとき、バックエンドへの最初の要求は私をログインページに送ります。
  4. 私はもう一度アプリケーションにログインしますが、私は最後のリクエスト(アプリケーションが起動していないユーザー)にリダイレクトされ、APIコールがあり、リソース(JavaScriptなど)へのリクエストがあります。

私はこれが私の春のセキュリティファイルであり、私はその行動を避けることができるかどうかはわかりません。

<sec:http use-expressions="true" auto-config="false"> 
    <sec:custom-filter ref="captchaFilter" before="FORM_LOGIN_FILTER" /> 

    <sec:custom-filter position="SWITCH_USER_FILTER" ref="switchUserProcessingFilter" /> 

    <sec:session-management session-fixation-protection="newSession"></sec:session-management> 

    <sec:intercept-url pattern="/j_spring_security_switch_user" access="isAuthenticated()"/> 
    <sec:intercept-url pattern="*/app/**" access="isAuthenticated()" /> 
    <sec:intercept-url pattern="/" access="permitAll" /> 

    <sec:intercept-url pattern="/login" access="permitAll" /> 
    <sec:intercept-url pattern="/accessDenied" access="permitAll" /> 
    <sec:intercept-url pattern="/loginFailed" access="permitAll" /> 
    <sec:intercept-url pattern="/css/**" access="permitAll" /> 
    <sec:intercept-url pattern="/img/**" access="permitAll" /> 
    <sec:intercept-url pattern="/public*" access="permitAll" /> 
    <sec:intercept-url pattern="/libs/**" access="permitAll" /> 
    <sec:intercept-url pattern="/fonts/**" access="permitAll" /> 

    <sec:intercept-url pattern="/*" access="permitAll" /> 
    <sec:intercept-url pattern="/**" access="isAuthenticated()" /> 

    <sec:form-login login-page="/login" 
     authentication-failure-url="/accessDenied" 
     authentication-success-handler-ref="authSuccessHandler" 
     authentication-failure-handler-ref="authFailureHandler" 
     login-processing-url="/login" /> 
    <sec:access-denied-handler error-page="/accessDenied" /> 
    <sec:logout /> 
</sec:http> 

<!-- Authentication providers --> 

<bean id="passwordEncoder" 
    class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"> 
    <constructor-arg value="512" /> 
</bean> 

<bean id="authSuccessHandler" 
    class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler"> 
</bean> 

<bean id="authFailureHandler" 
    class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler" 
    p:defaultFailureUrl="/loginFailed" /> 

<sec:authentication-manager alias="authenticationManager"> 
    <sec:authentication-provider ref="jaasAuthProvider" /> 
</sec:authentication-manager> 

</beans> 

答えて

1

Spring Security Referenceを参照してください:

デフォルトのポスト・ログイン先を設定

保護されたリソースへのアクセスを試みるとフォームのログインが要求されない場合は、default-target-urlオプションが有効になります。これは、ログインに成功した後にユーザーが取得するURLで、デフォルトは「/」です。 always-use-default-target属性を "true"に設定することで、ログインが「オンデマンド」であるか、明示的にログインしているかにかかわらず、このページでユーザーが常に終了するように設定することもできます。これは、アプリケーションで常にユーザーが「ホーム」ページで開始する必要がある場合に便利です。たとえば、次のようになります。

<http pattern="/login.htm*" security="none"/> 
<http use-expressions="false"> 
    <intercept-url pattern='/**' access='ROLE_USER' /> 
    <form-login login-page='/login.htm' default-target-url='/home.htm' always-use-default-target='true' /> 
</http> 
関連する問題