2016-12-06 2 views
-1

lorsque j'inclue la dépendance suivante Spring demande l'authentification pour toutes les demandes de repos.Désactiver l'authentification pour certaines méthodes

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 

mon pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.mycompany</groupId> 
    <artifactId>myapp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>MyApp</name> 
    <description></description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.2.RELEASE</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

Mon UserController.java

@RestController 
@RequestMapping("/users") 
public class UserController { 
    @Autowired 
    UserService us; 

    @RequestMapping("/all") 
    public Hashtable<String, User> getAll() { 
     return us.getAll(); 
    } 

    @RequestMapping("{id}") 
    public User getPerson(@PathVariable("id") String id) { 
     return us.getPerson(id); 
    } 

    @RequestMapping(method = RequestMethod.POST) 
    public void registerNewUser() { 
     us.registerNewUser(); 
    } 
} 

Comment puis-je désactiver l'authentification pour la méthode registerNewUser()? C'est pour enregistrer un utilisateur et je ne veux pas d'authentification pour cette méthode.

Répondre

1

Vous avez besoin d'une classe de configuration de sécurité et à partir de là, vous pouvez limiter explicitement ce comportement. Par exemple:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
     .authorizeRequests() 
      .antMatchers("https://stackoverflow.com/users/**").authenticated() 
      .antMatchers(HttpMethod.POST, "/users").permitAll(); 
    } 
} 
+0

J'ai créé cette classe sous le org.springframework.security.samples.config paquet mais dans le corps de la réponse que je reçois toujours non autorisée – Arya

+0

Pouvez-vous assurer que la configuration est correctement analysé par votre application et câblé dans? Il devrait être connecté. – Vaelyr

+0

Il n'y a aucune mention de "SecurityConfig" dans les journaux au démarrage de Spring. J'ai également essayé d'ajouter @Autowired au-dessus de la méthode configure – Arya