2017-09-16 1 views
1

Ich weiß, es gibt eine Menge Themen auf, aber gibt es keine Möglichkeit, nur die normale Feder Sicherheit ändern, um mit JSON-Objekten zu arbeiten.Spring Boot Sicherheit für den Rest

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) //za pre i post authorize v servisa 
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter 
{ 
    //Koi service shte polzvame 
    @Autowired 
    private UserService userService; 

    @Override 
    protected void configure(HttpSecurity http) throws Exception 
    { 
     http.authorizeRequests() 
       .antMatchers("/", "/user/register", "/css/**", "/js/**").permitAll() 
       .antMatchers("/user/user").access("hasRole('USER') or hasRole('ADMIN')") 
       .antMatchers("/user/admin").hasRole("ADMIN") 
       .anyRequest().authenticated() 
       .and() 
       .formLogin().loginPage("/user/login").permitAll() 
       .usernameParameter("username") 
       .passwordParameter("password") 
       .and() 
       .rememberMe().rememberMeCookieName("RememberMeFromLecture") 
       .rememberMeParameter("remember") 
       .key("golqmaTaina") 
       .and() 
       .logout().logoutSuccessUrl("/user/login?logout").logoutRequestMatcher(new AntPathRequestMatcher("/signout")).permitAll() 
       .and() 
       .exceptionHandling().accessDeniedPage("/user/unauthorized") 
       .and().csrf().disable(); 
    } 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception 
    { 
     auth.userDetailsService(this.userService).passwordEncoder(getBCryptPasswordEncoder()); 
    } 

    @Bean 
    public BCryptPasswordEncoder getBCryptPasswordEncoder() 
    { 
     return new BCryptPasswordEncoder(); 
    } 

} 

Dies ist meine Config-Datei und es funktioniert perfekt ohne Rest, aber mein Problem ist, möchte nur die Login-Seite machen mit Ruhe zu arbeiten, das ist alles. Wenn es so konfiguriert ist, wurde meine Anmeldung automatisch durchgeführt. Ich kann nicht einmal einen Unterbrechungspunkt in meinen Controllern setzen. Es funktioniert, aber ich möchte es mit Ruhe arbeiten lassen.

Antwort

1

Ich habe eine Beispielanwendung (https://github.com/manishsingh27/TokenBasedAuth) erstellt und basiert auf REST für die Authentifizierung. Client-Anwendung basiert auf AngularJS und es hat Login-Seite, Dateien sind hier - https://github.com/manishsingh27/TokenBasedAuth/tree/main/authz/src/main/resources/static. Und REST-APIs sind hier vorhanden - https://github.com/manishsingh27/TokenBasedAuth/blob/main/authz/src/main/java/com/adms/authz/self/user/controller/UsersController.java. Config-Datei ist hier - https://github.com/manishsingh27/TokenBasedAuth/blob/main/authz/src/main/java/com/adms/authz/config/SecurityConfiguration.java
Sie müssen die Annotation @EnableResourceServer verwenden, um die Rest-APIs zu sichern.

+0

können Sie etwas genauer als diese pls sein – Alexander

+0

Ich habe gerade meine Antwort aktualisiert, bitte überprüfen Sie und lassen Sie mich wissen, wenn Sie Fragen haben. – ManishSingh

Verwandte Themen