2016-11-30 5 views
0

を示しています - 私は、URL「/インデックス」を押すと春のセキュリティ:複数回のurlログインが私は春のセキュリティ設定以下のいる

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests() 
     .antMatchers("/footer").authenticated() 
     .antMatchers("/index").authenticated() 
     .anyRequest().permitAll() 

     .and().formLogin() 
      .loginPage("/login.html") 

     .and().rememberMe().tokenValiditySeconds(2419200) //valid for 4 weeks 

     .and().httpBasic(); 

    //.and() 
     //.requiresChannel() 
      //.antMatchers("/").requiresSecure(); 
} 

を、私は正しいログイン画面を参照してください。

ログインした後、ブラウザのURLを「/ footer」に変更すると、再びログイン画面が表示されます。しかし、すでにログインしているので、この動作は正常ですか?

私の要件は、ログインページとフッターページの両方を認証する必要があるということです。ユーザーがログインする前にフッタページに行くと、彼は認証のために約束されるべきです。 彼がすでに認証されている場合は、ページが表示されます。

答えて

0

このようなマッチャーを変更すると、必要に応じて動作します。

http.authorizeRequests() 
      .antMatchers("/footer", "/index").authenticated() 
      //.antMatchers("/footer", "/index").access("hasRole('ADMIN')") by this you can allow a particular role to access this url 
      .and().formLogin().loginPage("/login.html") 
      .and().rememberMe().tokenValiditySeconds(2419200) //valid for 4 weeks 
      .and().httpBasic(); 

ここでは、authenticated()の代わりにコメント行を使用できます。

+0

これにより、ログインせずに誰でもフッターページにアクセスできるようになります。私はそれを望んでいない。 –

+0

がpermitAll()の場所にある場合、このhasAnyRole([role1、role2])\tをaccess()で使用します。 とそれ以外の場合 .antMatchers( "/ footer"、 "/ index")。 –

+0

anyRequest()。permitAll()をanyRequest()。hasAnyRole()に置き換えた場合、ログインページへの無限のリダイレクトのような多くの問題。 –

0

antMatchers( "/ footer"、 "/ index")。authenticated()を入力してください。これはあなたの必要条件と一致します。

+0

これでも役に立たない。違いはありません。 –

関連する問題