2011-02-04 9 views
21

Sono nuovo a primavera-sicurezza (Java) e sto cercando una buona e semplice esempio di:ricerca di un semplice esempio di sicurezza Primavera

  1. Come usare la sicurezza a molla per il login e il logout

  2. assicurarsi che la sessione esiste in ogni pagina e, se non reindirizzare il login di nuovo

  3. Come ottenere l'accesso alla sessione utente corrente

Il mio progetto è attualmente funzionante con MVC molla e ibernazione.
Ho creato il loginAPI + loginDAO, ora ho bisogno di combinare la sicurezza e rendere sicure alcune pagine.

Ho cercato tutorial, ma molti sono molto complicati.

+0

io sto mantenendo esempi di codice sul mio blog: http://technotes.tostaky.biz/p/spring_27.html – JVerstry

risposta

1

Se non si è già visto this video by the lead developer of Spring Security. In realtà fa riferimento al sito Spring Security ma è facile non vederlo. Anche se sono d'accordo, good Gli esempi di Spring Security sono difficili da trovare.

+0

grazie, suona bello ma la qualità è così grave che non riesco a vedere il codice in background. Per favore, se qualcuno può pubblicare un esempio sarebbe grandioso. – MushMushon

1

Spring Security Tutorial by MKyong

how to perform database authentication (using both XML and Annotations) in Spring Security.

tecnologie utilizzate:

primavera 3.2.8.RELEASE
Primavera di sicurezza 3.2.3.RELEASE
Spring JDBC 3.2.3.RELEASE
Eclipse 4.2
JDK 1.6
Maven 3
Tomcat 6 o 7 (Servlet 3.x)
Server MySQL 5.6

SecurityConfig.java

package com.mkyong.config; 

import javax.sql.DataSource; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    DataSource dataSource; 

    @Autowired 
    public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception { 

     auth.jdbcAuthentication().dataSource(dataSource) 
     .usersByUsernameQuery(
      "select username,password, enabled from users where username=?") 
     .authoritiesByUsernameQuery(
      "select username, role from user_roles where username=?"); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http.authorizeRequests() 
     .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')") 
     .and() 
      .formLogin().loginPage("/login").failureUrl("/login?error") 
      .usernameParameter("username").passwordParameter("password") 
     .and() 
      .logout().logoutSuccessUrl("/login?logout") 
     .and() 
      .exceptionHandling().accessDeniedPage("/403") 
     .and() 
      .csrf(); 
    } 
} 

Primavera-security.xml

<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/security 
    http://www.springframework.org/schema/security/spring-security-3.2.xsd"> 

    <!-- enable use-expressions --> 
    <http auto-config="true" use-expressions="true"> 

     <intercept-url pattern="/admin**" access="hasRole('ROLE_ADMIN')" /> 

     <!-- access denied page --> 
     <access-denied-handler error-page="/403" /> 

     <form-login 
      login-page="/login" 
      default-target-url="/welcome" 
      authentication-failure-url="/login?error" 
      username-parameter="username" 
      password-parameter="password" /> 
     <logout logout-success-url="/login?logout" /> 
     <!-- enable csrf protection --> 
     <csrf/> 
    </http> 

    <!-- Select users and user_roles from database --> 
    <authentication-manager> 
     <authentication-provider> 
     <jdbc-user-service data-source-ref="dataSource" 
      users-by-username-query= 
      "select username,password, enabled from users where username=?" 
      authorities-by-username-query= 
      "select username, role from user_roles where username =? " /> 
     </authentication-provider> 
    </authentication-manager> 

</beans:beans> 
  • In precedenza congratulazioni, le /admin e sottocartelle di esso sono protette tutte le password.
  • login-page=”/login” - La pagina per visualizzare il modulo di login personalizzato
  • authentication-failure-url=”/login?error” - Se l'autenticazione non è riuscita, in avanti alla pagina /login?error
  • logout-success-url=”/login?logout” - Se il logout di successo, l'ora di vedere /logout
  • username-parameter=”username” - Il nome della richiesta che contiene il "nome utente". In HTML, questo è il nome del testo di input.
  • <csrf/> - Attivare la Request Forgery Cross Site (CSRF) Protezione
Problemi correlati