Spring MVCアプリケーションでexpired-url
を設定する必要があります。ここに私の努力はあるが、効果はありません。スプリングセキュリティ - expiredUrlが動作しない
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(adminAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(customerAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)
.csrf()
.disable()
.authorizeRequests()
.antMatchers("...", "...", "...").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/admin/login")
.and()
.logout()
.addLogoutHandler(customLogoutHandler())
.logoutSuccessHandler(customLogoutSuccessHandler())
.logoutUrl("/logout")
.deleteCookies("remove")
.invalidateHttpSession(true)
.permitAll()
.and()
.sessionManagement()
.maximumSessions(1)
.expiredUrl("/expired");
}
これは、任意の効果やユーザーのセッション時間を持っていない、春は/expired
URLに彼をリダイレクトし、ちょうど/admin/login
URLに彼をリダイレクトしません。
更新:
私はコメント、答えで提案されたソリューションを試みたが、何の効果も見ませんでした。また、方法の開始時にaddLogoutHandler()
,logoutSuccessHandler()
および2つのaddFilterBefore()
を削除しましたが、機能しません。
はまた、私はこのように別の解決策を試してみました:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(sessionManagementFilter(), SessionManagementFilter.class)
.csrf()
.disable()
.authorizeRequests()
.antMatchers("...", "...", "...").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/admin/login")
.and()
.logout()
.logoutUrl("/logout")
.deleteCookies("remove")
.invalidateHttpSession(true)
.permitAll();
}
@Bean
public SessionManagementFilter sessionManagementFilter() {
SessionManagementFilter sessionManagementFilter = new SessionManagementFilter(httpSessionSecurityContextRepository());
sessionManagementFilter.setInvalidSessionStrategy(simpleRedirectInvalidSessionStrategy());
return sessionManagementFilter;
}
@Bean
public SimpleRedirectInvalidSessionStrategy simpleRedirectInvalidSessionStrategy() {
SimpleRedirectInvalidSessionStrategy simpleRedirectInvalidSessionStrategy = new SimpleRedirectInvalidSessionStrategy("/expired");
return simpleRedirectInvalidSessionStrategy;
}
@Bean
public HttpSessionSecurityContextRepository httpSessionSecurityContextRepository(){
HttpSessionSecurityContextRepository httpSessionSecurityContextRepository = new HttpSessionSecurityContextRepository();
return httpSessionSecurityContextRepository;
}
は、誰もがこの問題を解決するために私を助けてもらえますか?
@hamed、オーケー..私はあなたが '/ expired'のURLを(私はこれが有効期限のURLであるため、これは厄介である知っているアクセスするために必要な権限がありませんね!処理することに苦しんではいけません..'.antMatchers( "/ expired"、 "..."、...)を追加してみてください。permitAll () 'をクリックして、今すぐあなたが有効期限切れのページにリダイレクトされたのか、それともまだログインページにリダイレクトされているのかを確認してください。 –