2016-07-26 20 views
0
@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
     .authorizeRequests() 
      .antMatchers("/", "/home").permitAll() 
      .anyRequest().authenticated() 
      .and() 
     .formLogin() 
      .loginPage("/login") 
      .permitAll() 
      .and() 
     .logout() 
      .permitAll(); 
} 

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth 
     .inMemoryAuthentication() 
      .withUser("user").password("password").roles("USER"); 

} 
} 

Meine JS-Datei:Löschen nicht funktioniert

$scope.del = function (record) { 
     if (confirm('Do you really want to delete?')){ 
      $http['delete']('/camera/list/' + record.filename).then(function() { 
       $scope.records.splice($scope.records.indexOf(record), 1); 
      }); 
     } 
     }; 

Meine löschen Controller:

@RequestMapping(value = "/list/{fn}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE) 
public ResponseEntity<Record> deleteUser(@PathVariable("fn") String filename) { 
    System.out.println("Fetching & Deleting data " + filename); 

    Record user1 = rep.findByfilename(filename); 
    if (user1 == null) { 
     System.out.println("Unable to delete." + filename + " not found"); 
     return new ResponseEntity<Record>(HttpStatus.NOT_FOUND); 
    } 

    rep.deleteByfilename(filename); 
    return new ResponseEntity<Record>(HttpStatus.NO_CONTENT); 
} 
} 

Mein Repository:

public interface RecordRepository extends MongoRepository<Record, String> { 


@Query("{ 'filename' : ?0 }") 
Record findByfilename(String filename); 

long deleteByfilename(String filename); 


} 

Wenn ich auf Löschtaste, Es zeigt mir diesen Fehler:

DELETE 
XHR 
http://localhost:8086/camera/list/2fb1a2e020285cd91dc68a4fa7822151 [HTTP/1.1 403 Forbidden 14ms] 

Jeder weiß, was ist der Fehler? Am Anfang funktionierte mein Löschen, aber als ich die Federsicherheit verwendete, funktioniert mein Löschen nicht.

+0

zeigen Sie uns Ihre Federsicherheitszugriffseinstellungen. – MaVVamaldo

+0

Wo sind die Zugriffseinstellungen? Entschuldigung zuerst mein Löschen kann arbeiten, nachdem ich Frühlingssicherheit verwende und das Löschen überhaupt nicht arbeiten kann. –

+0

Wenn Sie die Federsicherheit überhaupt nicht kennen, empfehle ich Ihnen, vor der Verwendung ein grundlegendes Tutorial zu suchen. In der Regel hat es eine Konfigurations-XML-Datei (wahrscheinlich kann es auch Annotation-konfiguriert sein), wo Sie Ihre Sicherheitsanweisungen setzen können. Schauen Sie [hier] (http://www.mkyong.com/tutorials/spring-security-tutorials/) und [hier] (https://dzone.com/refcardz/expression-based-authorization). Meine Vermutung ist, dass Sie eine Autorisierungsregel für das DELETE-Verb eingeben sollten, das dieser URL zugeordnet ist. Siehe den Link, auf den ich hingewiesen habe, um zu verstehen, wie. – MaVVamaldo

Antwort

1

Sie benötigen eine Feder Sicherheits Config überprüfen:

http.authorizeRequests() 
     .antMatchers("/", "/home").permitAll() 
     .anyRequest().authenticated() 

Wenn Sie anyRequest().authenticated() sagen, bedeutet dies, dass alle Anfragen authentifiziert werden sollen.

Wenn Sie camera/list zulassen wollen ohne Authentifizierung aufgerufen werden, fügen Sie es zu permitAll()

+0

Wie soll ich es schreiben? –

+0

Momentan wird meine Löschmethode nicht nach i unterstützt füge allow() für meine Kamera/Liste hinzu –