2016-12-06 4 views
-1

, wenn ich die folgende Abhängigkeit einschließen Spring fordert Authentifizierung für alle Ruheanforderungen.Deaktivieren Sie die Authentifizierung für einige Methoden

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

mein 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> 

Mein 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(); 
    } 
} 

Wie kann ich die Authentifizierung für den registerNewUser() Methode deaktivieren? Es ist für die Registrierung eines Benutzers und ich möchte keine Authentifizierung für diese Methode.

Antwort

1

Sie benötigen eine Sicherheitskonfigurationsklasse, von der Sie dieses Verhalten explizit einschränken können. Zum Beispiel:

@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

habe ich diese Klasse unter dem Paket org.springframework.security.samples.config aber im Antworttext noch Unerlaubte mir – Arya

+0

können Sie sicherstellen, dass die Konfiguration richtig von der Anwendung gescannt und verdrahtet im? Es sollte protokolliert werden. – Vaelyr

+0

"SecurityConfig" wird in den Protokollen nicht erwähnt, wenn der Spring-Boot startet. Ich habe auch versucht, die @Autowired oberhalb der Configure-Methode hinzuzufügen – Arya

Verwandte Themen