2017-09-12 3 views
0

Ich mache Updates zu unserer Web-Anwendung Hinzufügen einer neuen Benutzerrolle, die nur Zugriff auf bestimmte Seiten hat. Vor dieser Aktualisierung wurde zu jeder Zeit, zu der ein Benutzer angemeldet war und die Sitzung abgelaufen war und die Seite aktualisiert wurde, der Anmeldebildschirm angezeigt. Nun wird versucht, die Seite zu laden, die eine Nullzeigerausnahme verursacht, weil sie nicht angemeldet sind und keine Daten geladen werden können.Spring MVC - wie umleiten, um einzuloggen, wenn nicht angemeldet

Hier ist meine Config, die ich auf

http.csrf().ignoringAntMatchers("/notification/**"); 
    http.csrf().ignoringAntMatchers("/embed/**/apply"); 
    http.csrf().ignoringAntMatchers("/view/**/apply"); 
    http.csrf().ignoringAntMatchers("/login"); 
    http.csrf().ignoringAntMatchers("/logout"); 
    http.csrf().ignoringAntMatchers("/register"); 

    http.authorizeRequests() 

      .antMatchers("/").permitAll() 
      .antMatchers("/index").permitAll() 
      .antMatchers("/static/**").permitAll() 
      .antMatchers("/assets/**").permitAll() 
      .antMatchers("/register").permitAll() 
      .antMatchers("/skillRequest/**").permitAll() 
      .antMatchers("/skillRequest/skillFormUpdate/**").permitAll() 
      .antMatchers("/password/reset").permitAll() 
      .antMatchers("/password/reset/complete").permitAll() 
      .antMatchers("/email/verify").permitAll() 
      .antMatchers("/view/**").permitAll() 
      .antMatchers("/embed/**").permitAll() 
      .antMatchers("/dashboard").fullyAuthenticated() 
      .antMatchers("/profile").fullyAuthenticated() 
      .antMatchers("/candidate-profile/**").fullyAuthenticated() 
      .antMatchers("/users.json").fullyAuthenticated() 
      .antMatchers("/candidate/**/add").fullyAuthenticated() 
      .antMatchers("/candidate/**/edit").fullyAuthenticated() 
      .antMatchers("/**").not().hasAnyAuthority("ROLE_CANDIDATE") 
      .anyRequest().authenticated() 
      .and() 
      .formLogin() 
      .loginPage("/login") 
      .defaultSuccessUrl("/dashboard", false) //Force user to always go to the home page. 
      //.successHandler(successHandler()) 
      .permitAll() 
      .and() 
      .httpBasic() 
      .and() 
      .logout() 
      .permitAll(); 

Antwort

0

gearbeitet haben habe ich diese XML-config umleiten zur Login-Seite,

<security:session-management invalid-session-url="/login" session-authentication-error-url="/login" session-fixation-protection="newSession"> 
      <security:concurrency-control error-if-maximum-exceeded="true" max-sessions="1" expired-url="/login"/> 
     </security:session-management> 
+0

In welche XML-Konfiguration geht das? web.xml? – Dylan

+0

Sie sollten dieselbe Konfiguration in Ihrer Config-Klasse hinzufügen können – Bala

0

Ich weiß nicht, und vielleicht ist es klingt dumm, wenn dies die Antwort ist, die Sie suchen, ich bin auch neu zu Spring Boot und relativ neu zu Spring MVC, aber soweit ich herausgefunden habe, und das ist sehr einfache Lösung, die vielleicht nicht für große Projekte gelten :

  1. Für alle Seiten ohne Zugangsbeschränkung, macht es keinen Sinn macht Umleiten
  2. Für diese Funktionen anmelden, die auf eingeschränkte Seiten umleiten, ich habe soeben eine Anmerkung @PreAuthorize („hasAnyRole (‚ADMIN‘)“), @ PreAuthorize ("hasAnyRole ('ADMIN, USER')") oder @ PreAuthorize ("hasAnyRole ('USER')") abhängig davon, welche Rolle Zugriff auf die Seite hat.

Zusammen mit dem Authentifizierungsmechanismus erfüllt dies genau das, wonach Sie gefragt haben.

Verwandte Themen